我目前正在从公司的API获取JSON响应并将其转换为这样的PHP数组:
$api_url = file_get_contents('http://example.com');
$api_details = json_decode($api_url, true);
当我在var_dump
上运行$api_details
时,我得到了这个:
array(2) {
["metadata"]=>
array(5) {
["iserror"]=>
string(5) "false"
["responsetime"]=>
string(5) "0.00s"
["start"]=>
int(1)
["count"]=>
int(99999)
}
["results"]=>
array(3) {
["first"]=>
int(1)
["result"]=>
array(2) {
[0]=>
array(4) {
["total_visitors"]=>
string(4) "3346"
["visitors"]=>
string(4) "3249"
["rpm"]=>
string(4) "0.07"
["revenue"]=>
string(6) "0.2381"
}
[1]=>
array(4) {
["total_visitors"]=>
string(6) "861809"
["visitors"]=>
string(6) "470581"
["rpm"]=>
string(4) "0.02"
["revenue"]=>
string(7) "13.8072"
}
}
}
}
我正在尝试做两件事但无法弄清楚如何使用多维数组。
我需要检查metadata > iserror
是否为false
。如果它不是假的,我想显示一条错误消息而不是继续使用该脚本。
如果是false
,那么我想循环浏览results > result
的结果,并为每个结果回显total_visitors
,visitors
等。
我知道如何从数组中回显数据,我想当数组有多个级别时我会感到困惑。
任何可以指出我正确方向的人都会非常感激:)
答案 0 :(得分:1)
您可以使用foreach
迭代数组。您可以在此处阅读:http://php.net/manual/en/control-structures.foreach.php
由于您正在使用关联数组,因此您的代码将如下所示:
if ($arr['metadata']['iserror']) {
// Display error here
} else {
foreach($arr['results']['result'] as $result) {
echo $result['total_visitors'];
echo $result['visitors'];
}
}
您必须调整代码以完全符合您正在做的事情,但这应该可以帮助您解决问题。
希望有所帮助!