如何遍历多维数组?

时间:2016-11-17 22:05:48

标签: php arrays json multidimensional-array

我目前正在从公司的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"
      }
    }
  }
}

我正在尝试做两件事但无法弄清楚如何使用多维数组。

  1. 我需要检查metadata > iserror是否为false。如果它不是假的,我想显示一条错误消息而不是继续使用该脚本。

  2. 如果是false,那么我想循环浏览results > result的结果,并为每个结果回显total_visitorsvisitors等。

  3. 我知道如何从数组中回显数据,我想当数组有多个级别时我会感到困惑。

    任何可以指出我正确方向的人都会非常感激:)

1 个答案:

答案 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'];
  }
}

您必须调整代码以完全符合您正在做的事情,但这应该可以帮助您解决问题。

希望有所帮助!