PHP数组检查属性,根据属性返回值

时间:2016-05-11 17:51:42

标签: php arrays if-statement multidimensional-array

我试图根据数组中的属性返回拉取值,并且看起来很直接,但我似乎无法确定实现此目的的正确方法。

这是我想要从中获取的数组:

[1] => InfoOptions Object
            (
            [description] => INFO
            [optSequence] => 2
            [eqpObject] => CUSTOMER NTWK ENG
            [attribute] => 
            [eqpValue] => 
            [dlrSequence] => 10
            )

[2] => InfoOptions Object
           (
            [description] => 
            [optSequence] => 3
            [eqpObject] => CUSTOMER TEST
            [attribute] => CUSTOMER
            [eqpValue] => Jon Doe
            [dlrSequence] => 10
            )

这是我到目前为止所做的:

if (is_array($provisionCVResult->path->infoOptions-_InfoOptions)) {       
    foreach ($provisionCVResult->path->infoOptions ->InfoOptions as $cv_obj) {
        $CVA = array();
        $result = null;

        foreach ($CV_obj as $value) {
            if($value['attribute'] == 'CUSTOMER') {
                $CVA["eqpValue"] = $cv_obj->eqpValue;
                break;
            }
        }

        $this->cvArrayDataList[] = $CVA;
    }
}

我哪里错了?

2 个答案:

答案 0 :(得分:1)

快速查看,尝试更改

unsigned int m; // bitmask from which next permutation is chosen
                // where bitCount(m) == N
unsigned int v; // current permutation of bits where (v & m) == v
                // and bitCount(v) == K
unsigned int w; // next permutation of bits where (w & m) == w
                // and bitCount(w) == bitCount(v)
...

$value['attribute'] == 'CUSTOMER'

由于元素是" InfoOptions对象"而不是一个数组。

注意我还建议使用严格的比较,例如' ==='而不是' =='。

答案 1 :(得分:1)

  1. 如果 $ provisionCVResult-&gt; path-&gt; InfoOptions 是一个数组,那么编写 $ provisionCVResult-&gt; path-&gt; InfoOptions - &gt; InfoOptions <没有意义/ strong>在 foreach 中 编辑:我在评论中红色表示 $ provisionCVResult-&gt; path-&gt; InfoOptions-&gt; InfoOptions
  2. PHP区分大小写,因此 $ cv_obj $ CV_obj 是两个不同的变量
  3. 不需要第二个 foreach
  4. 因此,假设 $ provisionCVResult-&gt; path-&gt; InfoOptions-&gt; InfoOptions 返回 InfoOptions对象的数组,我认为您应该这样做:

    if (is_array($provisionCVResult->path->InfoOptions->InfoOptions)) 
    {
    
        $result = null;
    
        foreach($provisionCVResult->path->InfoOptions->InfoOptions as $cv_obj)
        {
    
            if($cv_obj->attribute == 'CUSTOMER')
            {
                $this->cvArrayDataList[] = array("eqpValue" => $cv_obj->eqpValue);
            }
    
        }
    
    }