2016-04-13 39 views
1

私はRestful APiとサードパーティのサービスを統合しようとしています。私は彼らからの応答を取得し、クエリを送信するために、管理、および使用してJSON配列にそれを変換した:PHPの複雑な連想配列から値を取得する

$company_json = file_get_contents($3rdparty_url); 
$company_array = json_decode($company_json, true); 

を私がいる問題は、この複雑な配列から値を取得しています。 これは以下のように配列が見えるものです:私はこのようないくつかのPHPでそれを横断することによって、配列のうち、「名前」の値を取得することができるよ

{ 
    "response":{ 
    "pagination":{ 
     "next_url":"http:\/\/someurl.org\/companies?limit=25&offset=25", 
     "total":33 
    }, 
    "data":[ 
     { 
     "id":"09934451", 
     "name":"Acme Incorporated" 
     }, 
     { 
     "id":"00435820", 
     "name":"Acme Group Limited" 
     }, 
     { 
     "id":"06841797", 
     "name":"Acme Ltd" 
     } 
    ] 
    }, 
    "request_id":"570bf0ca96a63" 
} 

foreach ($company_array as $data1 => $value1) { 
    foreach ($value1 as $data2 => $value2) { 
    foreach ($value2 as $data3 => $value3) { 
     foreach ($value3 as $data4 => $value4) { 
     if ($data4 == 'name') { 
      print $value4; 
     } 
     } 
    } 
    } 
} 

しかし、私本当にやりたい値を取得し、同じようなフォーマットのいくつかの並べ替えにそれらを入れている:私はこのような何かでそれを行うことができるだろうように見えたが、それはwoはないそれのまわりで私の検索から

<ul> 
    <li id="09934451">Acme Incorporated</li> 
    <li id="00435820">Acme Group Limited</li> 
    <li id="06841797">Acme Ltd</li> 
</ul> 

rk。私は、$ value4を使用していたかのようにの$ value4 [ 'ID'] & の$ value4 [ '名前']は、値のみの最初の文字をプリントアウトする[0]:

foreach ($company_array as $data1 => $value1) { 
    foreach ($value1 as $data2 => $value2) { 
    foreach ($value2 as $data3 => $value3) { 
     foreach ($value3 as $data4 => $value4) { 
     print '<li id="' . $value4['id'] . '">' . $value4['name'] . '</li>'; 
     } 
    } 
    } 
} 

Iドン「tは私があまりにも遠くなることができると思いますが、それはで私の頭を行うために始めている。

答えて

1

あなたのそれを複雑にかけ、それは非常に簡単です...

foreach ($company_array['response']['data'] as $data) { 
    echo '<li id="' . $data['id'] . '">' . $data['name'] . '</li>'; 
} 
+0

はありがとうございました。それは完全に機能します。あなたが投稿したものに非常に近いものをいくつか試してみましたが、配列をすっかり横断することができませんでした! – JustinChev

+0

問題は解決してください – fire

関連する問題