在PHP中从复杂关联数组中获取值

在PHP中从复杂关联数组中获取值,php,arrays,json,rest,associative-array,Php,Arrays,Json,Rest,Associative Array,我正在尝试将第三方服务与Restful APi集成(第一次这样做)。我已成功发送查询,从他们那里获得响应,并使用以下命令将其转换为JSON数组: $company_json = file_get_contents($3rdparty_url); $company_array = json_decode($company_json, true); 我遇到的问题是从这个复杂数组中获取值。 这就是阵列的外观: { "response":{ "pagination":{ "ne

我正在尝试将第三方服务与Restful APi集成(第一次这样做)。我已成功发送查询,从他们那里获得响应,并使用以下命令将其转换为JSON数组:

$company_json = file_get_contents($3rdparty_url);
$company_array = json_decode($company_json, true);
我遇到的问题是从这个复杂数组中获取值。 这就是阵列的外观:

{
  "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"
}
我可以通过使用以下PHP遍历数组,从数组中获取“name”值:

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;
        }
      }
    }
  }
}
但我真正想做的是获取这些值并将它们转换成某种格式,如:

<ul>
  <li id="09934451">Acme Incorporated</li>
  <li id="00435820">Acme Group Limited</li>
  <li id="06841797">Acme Ltd</li>
</ul>
    Acme公司 Acme集团有限公司 Acme有限公司
从我周围的搜索来看,我似乎可以用这样的东西来做,但它不起作用。$value4['id']和$value4['name']只打印出值的第一个字母,就好像我在使用$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>';
      }
    }
  }
}
foreach($company\u数组为$data1=>$value1){
foreach($value1作为$data2=>$value2){
foreach($value2作为$data3=>$value3){
foreach($value3作为$data4=>$value4){
打印“
  • ”.$value4['name'].
  • ”; } } } }

    我不认为我能走得太远,但这已经开始让我头疼了。

    你把事情复杂化了,很简单

    foreach ($company_array['response']['data'] as $data) {
        echo '<li id="' . $data['id'] . '">' . $data['name'] . '</li>';
    }
    
    foreach($company_数组['response']['data']作为$data){
    echo“
  • ”.$data['name'.
  • ”; }
    非常感谢您。那很好用。我尝试了一些与你发布的内容非常接近的方法,但在遍历数组时没有完全正确!