无限极分类如何获取每一极的后代数量,包括儿子和孙子

无限极分类如何获取每一极的后代数量,包括儿子和孙子

例如:
`$items = array(

0 => array('id' => 0, 'pid' => -1, 'name' => '中国'),

1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),

2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),

3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),

4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),

5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),

);`

我想得到

`$items = array(

0 => array('id' => 0, 'pid' => -1, 'name' => '中国', 'num' => '后代数量'),

1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省', 'num' => '后代数量'),

2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省', 'num' => '后代数量'),

3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市', 'num' => '后代数量'),

4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县', 'num' => '后代数量'),

5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市', 'num' => '后代数量'),

);`

如果是生成树之后的,只要有后代数量也行,谢谢各位大神了


回答:

不会 PHP,尽量写的像 PHP:

1、对原始数据按照 pid 做一个分类,得到一个 pid => items 的对象: pidItems,可以用数组的 reduce 方法,PHP 应该也有的,代码:

var $pidItems = array_reduce($items, function ($res, $item) {

$res[$item['pid']] = $res[$item['pid']] || array();

array_push($res[$item['pid']], $item);

return $res;

}, array());

2、遍历原始数据,执行 $item['num'] = $pidItems[$item['pid']].count;


回答:

我一般不用PHP实现全部。为什么呢?因为遇到部分情境下会出现内存溢出。我通常是把原始数组中的无限上级或无限下级找出来,然后把数据交给前端。前端只需在使用节点的时候拿一下children中的值就可以一行代码获取元素的个数了。如果用PHP,还需要再循环一遍数组。

你可以参考这篇文章:https://www.zkii.net/tech/php...

如果你确实想用PHP获取后代数量,就再循环一遍找到无限下级ID后的数组。然后sizeof()一下就行了。不过还是建议前端来弄。


回答:

这种 用递归函数呀, 很简单

以上是 无限极分类如何获取每一极的后代数量,包括儿子和孙子 的全部内容, 来源链接: utcz.com/p/182025.html

回到顶部