我有一个这样的数组:
[
[
'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);