将来的你, 肯定会感激现在拼命的自己。
  • php
  •  2015.05.18 15:10
  •  654

php无限极分类将二维数组转为多维数组的一种非递归方法

简单的无限级分类,数组如下

$arr = array(    
    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' => '深圳市'),
)

将$arr数组打印为如下形式:
Array(
    [0] => Array(            
        [id] => 1
        [pid] => 0
        [name] => 广东省
        [son] => Array(
            [0] => Array(
                [id] => 3
                [pid] => 1
                [name] => 广州市
                [son] => Array(
                    [0] => Array(
                        [id] => 4
                        [pid] => 3
                        [name] => 深圳市
                    )
                )
            )
    )
  [1] => Array(            
        [id] => 2
        [pid] => 0
        [name] => 广西省
  )
  ......

如何实现,之前有写过一种用递归的方法,但当层级变多了后,会超出php默认最大的递归循环调用“100”次的默认配置限制,最后找到了值引用的方法解决了,应该这样的

function getTree($arr){
    $tree = array();
        foreach($arr as $arrs){
        if(isset($arr[$arrs['pid']])){
        $arr[$arrs['pid']]['children'][] = &$arr[$arrs['id']];
        }else{
        $tree[] = &$arr[$arrs['id']];
        }
    }
    return $tree;
}
print "<pre>";
print_r(getTree($arr));



 钟永标

个人头像


 热门推荐


 热门阅读