これは多次元配列です:
$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 として返すことですが、「return」の代わりに「die($value)」を使用すると、$value が多次元配列の右側の部分として表示されます。「return」はループを中断せず、条件が満たされていてもループが継続するように見えます。関数の戻り値のテストで「check」という単語が出力されます。結果を見る:
key : 1 and group id is 6
key : 6 and group id is 6
check
null
私はphp 5.4でLaravelを使用しています