我有一个小片段来从多维数组中获取ID。
<?php
$array = array(
array(
'id' => 1,
'children' => array(
array(
'id' => 12,
'children' => array()
),
array(
'id' => 13,
'children' => array(
array(
'id' => 112,
'children' => array()
)
)
)
)
),
array(
'id' => 140,
'children' => array(
array(
'id' => 144,
'children' => array(
array(
'id' => 101,
'children' => array()
)
)
)
)
),
array(
'id' => 32,
'children' => array(
array(
'id' => 223,
'children' => array()
)
)
),
array(
'id' => 40,
'children' => array()
)
);
function get_ids( $array, $result )
{
foreach( $array as $a )
{
$result[] = $a['id'] . "\n";
if ( count( $a['children'] ) )
{
return get_ids( $a['children'], $result );
}
}
return $result;
}
print_r( get_ids( $array, array() ) );
此代码输出第一个数组ID,如下所示:
Array
(
[0] => 1
[1] => 12
[2] => 13
[3] => 112
)
如果我而不是$ result []放回echo并删除返回get_ids行的返回,它会按预期回显每个id,问题是我想将它们放在带有id的漂亮外观数组中。
我想我已经弄乱了回复陈述,但我不知道。
答案 0 :(得分:3)
第一次返回只返回孩子的id;你失去了父母的身份。你需要两者。
所以,替换这个:
return get_ids( $a['children'], $result );
有了这个:
$result = array_merge( $result, get_ids( $a['children'] ));