从 PHP 中的复杂关联数组中获取值
Getting values out of complex Associative Array in PHP
我正在尝试将第 3 方服务与 Restful APi 集成(第一次做这样的事情)。我已经成功地发送了查询,得到了他们的回复,并使用以下方法将其转换为 JSON 数组:
$company_json = file_get_contents(rdparty_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>
根据我的搜索,我似乎可以用类似的方法来完成它,但它不起作用。 $value4['id'] & $value4['name'],只打印出values的首字母就好像我在使用 $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_array['response']['data'] as $data) {
echo '<li id="' . $data['id'] . '">' . $data['name'] . '</li>';
}
我正在尝试将第 3 方服务与 Restful APi 集成(第一次做这样的事情)。我已经成功地发送了查询,得到了他们的回复,并使用以下方法将其转换为 JSON 数组:
$company_json = file_get_contents(rdparty_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>
根据我的搜索,我似乎可以用类似的方法来完成它,但它不起作用。 $value4['id'] & $value4['name'],只打印出values的首字母就好像我在使用 $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_array['response']['data'] as $data) {
echo '<li id="' . $data['id'] . '">' . $data['name'] . '</li>';
}