PHP递归问题,数据总是对不上
我有这样一条sql:
SELECT
*,
IF (
`pid` > 0,
concat('0', ',', `pid`, ',', `id`),
concat(`pid`, ',', `id`)
) new_str
FROM
`shop`
WHERE
`deleted_at` IS NULL
AND `type` < 2
AND `status` = 1
ORDER BY
new_str DESC,
id DESC
但是我使用这样的方式:
SELECT * FROM `shop` WHERE `deleted_at` IS NULL AND `type` < 2 AND `status` = 1 order by id desc
递归的方法如下:
/**
* 树状结构
*
*/
function getTree($cates, $pid = 0)
{
static $tree = [];
foreach ($cates as $cate) {
if ($cate['pid'] == $pid) {
//父类数组赋给$tree数组
$tree[] = $cate;
$this->getTree($cates, $cate['id']);
}
}
return $tree;
}
结果确实少了一条
我查询了一下 也没有重复的条数:
SELECT
*
FROM
`shop`
WHERE
`deleted_at` IS NULL
AND `type` < 2
AND `status` = 1
GROUP BY
`name`
HAVING
COUNT(*) > 1
我递归错误的地方在哪里呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这样也是少一个,此处仅是为了记录