【问题标题】:Problem Iterating through a multi-dimensional array in PHP在 PHP 中遍历多维数组的问题
【发布时间】:2019-05-22 11:59:59
【问题描述】:

在一个 Laravel 应用程序上工作,我正在使用来自 API 的一些数据。我将响应作为 JSON 对象获取并转换为数组。它表现为一个复杂的多维数组 (嵌套数组)。我正在尝试使用嵌套的 foreach 循环遍历它,以便访问每个项目的 id,但我一直失败..

响应存储在名为 usmDet 的变量中

数组响应

array:1 [▼
  0 => array:1 [▼
    0 => array:3 [▼
      "id" => "74696"
      "agents" => array:13 [▶]
      "policies" => array:481 [▶]
    ]
    1 => array:3 [▼
      "id" => "1525"
      "agents" => array:8 [▶]
      "policies" => array:357 [▶]
    ]
  ]
  1 => array:1 [▼
    0 => array:3 [▼
      "id" => "73401"
      "agents" => array:1 [ …1]
      "policies" => array:8 [ …8]
    ]
    1 => array:3 [▼
      "id" => "210"
      "agents" => array:13 [ …13]
      "policies" => array:773 [ …773]
    ]
  ]
]

我的嵌套 foreach

 foreach($usmDet as $key => $value){
  if(is_array($value)){
    foreach($value as $key => $value){
      echo $key." ".$value."<br>";
    }
  }
  echo "<br>";
}

【问题讨论】:

    标签: php arrays multidimensional-array foreach


    【解决方案1】:

    id 是数组的一部分,您可以像$value['id'] 一样访问它

    在第二个 foreach 中,为防止混淆,您应该为键和值选择不同的名称。

    试试这样:

    foreach($usmDet as $key => $value){
        if(is_array($value)){
            foreach($value as $k => $v){
                echo $v['id'] . "<br>";
            }
        }
    }
    

    结果:

    74696
    1525
    73401
    210
    

    Php demo

    要在多个嵌套数组时获取键“id”的所有值,您可以使用array_walk_recursive

    $ids = [];
    array_walk_recursive($usmDet, function($value, $key) use (&$ids){
        if ($key === "id") {
            $ids[] = $value;
        }
    });
    
    print_r($ids);
    

    Php demo

    【讨论】:

    • 它工作正常,非常感谢,我检查了我的代码并注意到数组已经更深入(代理也是嵌套数组),其中包含一些 id 属性。我访问它?
    • @Martin 你是这个意思吗? 3v4l.org/tc79q你可以使用array_walk_recursive
    • 我已将值存储在变量中,并在浏览器 3v4l.org/3NpBD 上 dd 并且我得到布尔值 true.. 我的目标是将它们存储在一个数组中,以便我可以在视图中使用它们一个 foreach 循环..
    • 那是因为 array_walk_recursive 返回一个布尔值。
    • 好的,非常感谢先生,您真的帮了我。以前从未使用过多维数组
    猜你喜欢
    • 2012-11-21
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-21
    • 2011-01-02
    • 2014-10-03
    • 2016-02-16
    相关资源
    最近更新 更多