这是多维数组:
$group_tree = Array
(
[1] => Array
(
[id] => 1
[children] => Array
(
[6] => Array
(
[id] => 6
[children] => Array
(
[7] => Array
(
[id] => 7
[children] => Array
(
)
)
)
)
)
)
)
这是我使用的递归函数($ group_id = 6):
public static function sub_group_tree( $group_tree , $group_id )
{
foreach ( $group_tree as $key => $value ) {
echo "<br>key : $key and group id is $group_id <br>" ;
if( (int) $key == $group_id ) {
echo "check";
return $value;
}
if( count($value['children']) ){
Group::sub_group_tree( $value['children'] , $group_id ) ;
}
}
}
奇怪的是我将“return”作为null返回,但如果我使用“die($ value)”而不是“return”,那么我将$ value视为多维数组的正确部分。 看起来“返回”不会破坏循环,并且循环继续,尽管条件是填充,单词“check”将在函数返回值的测试中打印。 看结果:
key : 1 and group id is 6
key : 6 and group id is 6
check
null
我在php 5.4上使用Laravel
答案 0 :(得分:0)
一:你不应该在函数中途返回,你应该将$return
之类的变量设置为你想要的值,然后在结束时设置return $return
功能。
二:当你递归调用sub_group_tree
时,你没有指定一个变量来包含结果,所以该函数的返回是没有意义的......
Group::sub_group_tree( $value['children'] , $group_id ) ;
答案 1 :(得分:0)
试试这个:
public static function sub_group_tree( $group_tree , $group_id )
{
...
if( count($value['children']) ) {
return Group::sub_group_tree( $value['children'] , $group_id ) ;
}
...
}
问题是您没有从sub_group_tree()
中的if( count($value['children']) ) { }
返回结果。