【问题标题】:How to loop through multidimensional array?如何循环遍历多维数组?
【发布时间】:2016-11-17 22:05:48
【问题描述】:

我目前正在从一家公司的 API 获得 JSON 响应,并将其转换为 PHP 数组,如下所示:

$api_url = file_get_contents('http://example.com');
$api_details = json_decode($api_url, true);

当我在 $api_details 上运行 var_dump 时,我得到了这个:

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等。

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

任何能指出我正确方向的人将不胜感激:)

【问题讨论】:

    标签: php arrays json multidimensional-array


    【解决方案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'];
      }
    }
    

    您必须调整代码以完全适合您正在做的事情,但这应该会让您越界。

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2013-08-15
      • 2013-04-01
      • 1970-01-01
      • 2012-04-21
      相关资源
      最近更新 更多