php递归问题求解

大神们,我这个递归哪有问题啊,为嘛$res的结果只有一个数值???传入的$pid是一个顶级分类id,$arr是包含所有pid和id的数组.

https://img2.mukewang.com/5c8f6a4f0001369f05040253.jpg

月关宝盒
浏览 458回答 5
5回答

翻翻过去那场雪

感觉是数据源有问题。代码逻辑没有问题

一只甜甜圈

function getTree($id, $data) { $ret = []; foreach ($data as $key => $val) { if ($val['parent_id'] == $id) { $tmp = $data[$key]; unset($data[$key]); count(getTree($val['id'], $data)) && $tmp['children'] = getTree($val['id'], $data); $ret[] = $tmp; } } return $ret; } 抄来的。。。

吃鸡游戏

调用函数的第二个参数错了,不应该再是arr应该是v

Qyouu

因为你没保存返回值啊。foreach里的getChild方法的返回值不要了吗?

智慧大石

$res = $this->getChild($v['id'], $arr);,递归没有赋值给存储结果的 $res。
打开App,查看更多内容
随时随地看视频慕课网APP