数组分类的重构方法
当我们做权限分类和商品属性和商品规格分类时总会遇到一个痛疼的问题,如何简单方便的归类使我们的数组清晰明了呢?在这里举两个例子
递归思想
static public function getTree($data,$pid=0){
$child = [];
foreach ($data as $k=>$v){
if($v['pid']==$pid){
$child[] = $v;
}
}
foreach ($child as $kk=>$vv){
$child[$kk]['child'] = self::getTree($data,$vv['nid']);
}
return $child;
}
归类思想
static public function getTree($list){
$temp = [];
foreach($list as $v){
$v['son'] = [];
$temp[$v['nid']] = $v;
}
foreach($temp as $k=>$v){
$temp[$v['pid']]['son'][] = & $temp[$v['nid']];
}
return isset($temp[0]['son']) ? $temp[0]['son'] : [];
}
这里取数组下标0的值是因为我们的数组归类上向上归类的底层归类到上一层,上一层归类到其上一层,最终归类到顶层(当然我这里由于我的顶层pid=0),所以我取下标为0的值。大家使用时要注意获取到自己数组的顶层下标。
注意:使用第二种方法时要注意接受的数据只能为数组