这是一个父级和子级分类的递归方法,自己写的,
但是到了最后判断完剩余数组为空的时候,return保存好的数组$arr_comments,结果又会继续循环,
但是如果dd打印$arr_comments = []数组,则会正确的输出.
laravel的框架写的
public static function foreachComments($comments, $arr_id = array(0), $arr_comments = [])
{
$arr = $comments;
$s_comments = &$arr;
// //一个全局的变量 保存循环出来的数组,
// //一个全局的ID变量数组,保存每次循环出来的数组的ID
foreach ($comments as $key => $value) {
$a = $value->father_id;
//数组取值为空??!!
$b = $arr_id[count($arr_id) - 1];
if ($a == $b) {
$arr_comments[count($arr_comments)] = $comments[$key];
$arr_id[count($arr_id)] = $value->id;
$s_comments = array_except($comments, $key);
self::foreachComments($s_comments, $arr_id, $arr_comments);
}
}
$arr_id = array_except($arr_id, count($arr_id) - 1);
if (count($arr)==0) {
dd($arr_comments);
}
self::foreachComments($s_comments, $arr_id, $arr_comments);
}
函数return 后会把执行权交给函数调用处.
参考资料:http://php.net/manual/zh/func...
dd函数是终止程序并打印结果,所以你用DD当然可以打印出结果啊..
dd相当于var_dump();die;