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

时间:2016-04-13 15:01:52

标签: php arrays json rest associative-array

我正在尝试将第三方服务与Restful APi集成(第一次做这样的事情)。我已设法发送查询,从中获取响应,并使用以下命令将其转换为JSON数组:

public Car() {
    speed = 0;
    gear = 0;
}

Car myCar = new Car();

我遇到的问题是从这个复杂的数组中获取值。 这就是数组的样子:

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

我可以通过使用像这样的PHP遍历数组来获取数组中的'name'值:

{
  "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;
        }
      }
    }
  }
}

从我的搜索中看起来我可以用这样的东西来做,但它不起作用。 $ value4 ['id'] & $ value4 ['name'] ,只打印出值的第一个字母,就像我使用的是$ value4 [0]:

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

我不认为我离得太远但是它已经开始了。

1 个答案:

答案 0 :(得分:1)

你过于复杂,它非常简单......

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