2016-05-11 8 views
1

配列の属性に基づいて値を取得しようとしていますが、それはまっすぐであるように見えますが、これを達成する正しい方法を確かめることはできませんこの。ここでPHP配列属性を確認し、属性に基づいて値を返します

は私からプルしようとしています配列されています。ここでは

[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; 
    } 
} 

+1

'$ provisionCVResult'ではなく、' error_reporting(E_ALL);これ以上は分かりません。ini_set( 'display_errors'、 '1'); ' – AbraCadaver

+0

希望する出力は何ですか? –

+0

$ provisionCVResultはその配列を返していますが、希望の結果は=属性の '属性'の 'eqpValue'を返します。 – LeeBronwin

答えて

2
  1. $ provisionCVResult-> path-> InfoOptionsの場合は、配列である、それは$ provisionCVResult-> path-> InfoOptions書き込みしても意味がありません - foreachの EDIT中> InfoOptionsを:I PHPは、大文字と小文字が区別され
  2. コメント配列であることを$ provisionCVResult-> path-> InfoOptions-> InfoOptionsで赤がとても$ cv_obj$ CV_objは、二つの異なる変数です
  3. は、第二foreachの$ provisionCVResult-> path-> InfoOptions-> InfoOptionsInfoOptionsの配列を返していると仮定すると、

ので必要ありませんオブジェクト、私はあなたのような何かを行うべきだと思いますこれは:

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); 
     } 

    } 

} 
+0

コメント内のOPの応答に基づいて、配列を含む 'InfoOptions'に' InfoOptions'という別のプロパティがあるようです。 –

+0

OK。ありがとう、私はそれに応じて私の答えを編集しました –

+0

これはありがとう、私はそれを見ることは簡単に見える。 – LeeBronwin

1

簡単に見を有する要素は "InfoOptionsオブジェクト" ではなく配列であるとして

$value->attribute == 'CUSTOMER' 

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

を変更してみてください。

注意厳密な比較を使用することをおすすめします。たとえば、 '=='の代わりに '==='などを使用することをおすすめします。

関連する問題