递归遍历无限级分类
有时候我们会有这样的需求。将一张无限级分类表,处理好层级关系
例如,选择选择部门的上级关系
表数据格式。pid 0 为顶级
idpidname
10行政
21主管
30人事
43经理
54员工
【递归遍历无限级分类】转换格式为以下格式,普通现实方法为,使用sql一层层去查找。
我们可以一次把所有数据拿出来,然后递归现实
行政
|----主管
人事
|----经理
|----|----员工
代码实现方法
/**
* 无限极分类处理成一个数组
* @param array $catArray 操作数组
* @param$id 父ID的值
* @param$pid 父ID的key
* @param$prefix 用于数组排列前的前缀
* @return miultitype:number
*/
public function sortdata($catArray, $id = 0 , $pid='pid', $prefix = '|----')
{
static $formatCat = array();
static $floor= 0;
//循环数组
foreach($catArray as $key => $val)
{
if($val[$pid] == $id)
{
//根据循环的次数得到数组值得前缀
$str = $this->nstr($prefix,$floor);
$val['name'] = $str.$val['name'];
$val['floor'] = $floor;
$formatCat[]= $val;
unset($catArray[$key]);
$floor++;
$this->sortdata($catArray, $val['id'] ,$prefix );
$floor--;
}
}
return $formatCat;
}
/**
* 获得数组前缀
* @param unknown $str
* @param number $num
*/public function nstr($str,$num=0)
{
$return = '';
for($i=0;
$i<$num;
$i++)
{
$return .= $str;
}
return $return;
}
推荐阅读
- 07/22【晨读感悟】保持好奇心,生活才有无限可能
- 星际无限|星际无限 | 官方推出Filecoin MinerX奖学金计划,吸引中小型Filecoin矿工
- 生活不就是这样吗(一边努力着一边辛苦着,想到为的人还无限幸福着)
- 致无限美好的2019
- JavaScript|JavaScript — 初识数组、数组字面量和方法、forEach、数组的遍历
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- 鹊桥仙|鹊桥仙 诗思无限
- for循环遍历数组
- 集合框架(集合嵌套存储和遍历元素的案例代码实现)
- 坎