数组循环问题

3

I have the following array

Array(
Array
(
    [Segment] => Array
        (
            [id] => 738
    )
),
Array
(
    [Segment] => Array
        (
            [0] => array([id] => 740),
            [1] => array([id] => 750)
    )
)
)

如何循环数组。第二个值需要内部循环。

我需要以下输出结果:

第一次循环为id->738

第二次循环为id->740,id->750

谢谢, Nisanth


数组格式有点奇怪。是谁生成的? - zerkms
实际上,这是从一个API返回的。 - Nisanth Kumar
我可以检查计数并编写if/else条件来循环内部循环。但如果我们更改数组结构,我正在寻找简单的解决方案。 - Nisanth Kumar
如果结构被更改,您需要相应地更改代码。 - zerkms
如果可以更改数组结构,则将第一个案例的结构更改为[0] -> array([id] => 738),这将是正确的解决方案...... - Starx
显示剩余2条评论
2个回答

1

你可以这样做:

foreach($array as $a) {
    foreach($a as $segment => $array) {
        if(isset($array['id'])) {
           echo $array['id']; //if there is an `id` index echo it
        } else {
           foreach($array as $k => $v) { //or else.. start looping again
               echo $v['id'];
           }
        }
    }
}

@gautamdharmapuri,我没有测试过,但应该可以。试一下吧。 - Starx

0
你可以使用 array_walk_recursive 来收集所有的 id 值。
尝试一下:
$ids = array();
array_walk_recursive($arr, function($v, $k) use (&$ids) {
  $ids[] = $v;
});
var_dump($ids);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接