2017-05-09 19 views
0

['field']の値でこの配列を検索し、配列のそのフィールドに関連付けられた['value']の値を返します。PHP配列の配列の配列

たとえば、「TheThirdFieldに関連付けられた値を教えてください」と言いたいと思います。

$ myVariable = $ Array ['result'] ['totalrows'] [0] ['rownum'] [0] ['field']次のような多くの並べ替えを試しました。 ;

さらに明確にするために、私の検索フィールドがどこにあるのかわかりません。[field ']に関連付けられた文字列値しか知りません。

これはどのようにして達成できますか?

Array 
(
    [result] => Array 
     (
      [totalrows] => 1 
      [rows] => Array 
       (
        [0] => Array 
         (
          [rownum] => 1 
          [values] => Array 
           (
            [0] => Array 
             (
              [field] => testMeOnce 
              [value] => 436586498 
             ) 

            [1] => Array 
             (
              [field] => testMeTwice 
              [value] => 327698034 
             ) 

            [2] => Array 
             (
              [field] => theThirdField 
              [value] => 108760374 
             ) 

            [3] => Array 
             (
              [field] => theFourthField 
              [value] => 2458505 
             ) 

            [4] => Array 
             (
              [field] => fifthField 
              [value] => -0.0201 
             ) 

           ) 

         ) 

       ) 

     ) 

) 
+0

これを実行しようとするとエラーが発生しますか? –

答えて

1

何かそんなことはありますか?私はこのような何かをするだろう

$needle = 'theThirdField'; // searched field name 
$valuesArray = $Array['result']['rows'][0]['values']; //now you have clearer array 

array_walk($valuesArray, function($element, $key) use ($needle) { 
    if ($element['field'] == $needle) { 
     echo $element['value']; 
    } 
}); 
1

は、あなたが$ myVariable変数の次元でのみ検索したいと仮定すると:

$myVariable = $Array['result']['rows'][0]['values']; 

foreach ($myVariable as $key => $value) { 
    if($value['field'] === 'theThirdField') { 
     echo $value['value']; 
     break; 
    } 
} 
0

私はあなたのコードを実行したときに、私はいくつかの構文エラーを得ました。私は、この(のみ変更された構文)にあなたの配列を変更した:

$a = Array 
    (
     'result' => 
      [ 
       'totalrows' => 1, 
       'rows' => 
        [ 
         0 => 
          [ 
           'rownum' => 1, 
           'values' => 
            [ 
             0 => 
              [ 
               'field' => 'testMeOnce', 
               'value' => 436586498 
              ], 

             1 => 
              [ 
               'field' => 'testMeTwice', 
               'value' => 327698034 
              ], 

             2 => 
              [ 
               'field' => 'theThirdField', 
               'value' => 108760374 
              ], 

             3 => 
              [ 
               'field' => 'theFourthField', 
               'value' => 2458505 
              ], 

             4 => 
              [ 
               'field' => 'fifthField', 
               'value' => -0.0201 
              ] 

            ] 

          ] 

        ] 

      ] 

    ); 

今、あなたがこのような値を得ることができます。私は、これはあなたが探しているものであることを願っています

print($a['result']['rows'][0]['values'][2]['value']); // --> 108760374 

を!

0

ありがとうございます。私はあなたの提案のミックスを使用して、次のようにやってしまった:

$valuesArray = $Array['result']['rows'][0]['values']; 

foreach ($valuesArray as $value) { 
    $fieldName = $value['field']; 
    $$fieldName = $value['value']; 
} 

私はすべて私がしたいフィールドではなく、オーダーの名前を知っているので、これは私が各フィールドの値のすべてをキャプチャすることができフィールドの名前は変数名になります。