收集具有特定键的多维数组中的所有值



我有一个这样的数组:

[
    [
        'id' => 13,
        'children' => [
            ['id' => 14, 'parent_id' => 13],
            ['id' => 15, 'parent_id' => 13],
        ]
    ]
]

如何从这个数组中获得所有[id]值并将它们存储在像这样的平面数组中:

[13, 14, 15]

$a是您的原始数组。

array_merge(array($a['id']),
            array_map(function($child) { return $child['id']; }, $a['children']));

如果使用递归方法,那么数组的长度和深度就无关紧要了。array_walk_recursive()将访问每个"叶节点"。在数组中;如果该叶节点的键为id,则将该值压入结果数组。

代码(演示):

$result = [];
array_walk_recursive(
    $array,
    function($v, $k) use(&$result) {
        if ($k === 'id') {
            $result[] = $v;
        }
    }
);
var_export($result);

相关内容

  • 没有找到相关文章