代码敲得再六又怎么样...

PHP无限级分类实现的方法

49 2020-12-16 07:02:40
$items = array(
     array('id' => 1, 'pid' => 0, 'name' => '中国'),
     array('id' => 2, 'pid' => 0, 'name' => '日本'),
     array('id' => 3, 'pid' => 0, 'name' => '美国'),
     array('id' => 4, 'pid' => 1, 'name' => '北京'),
     array('id' => 11, 'pid' => '4', 'name' => '朝阳区'),
 	array('id' => 12, 'pid' => '11', 'name' => '天安门')
);
foreach($array as $value){
	$items[$value['id']] = $value;
}
/**
 * 将数据格式转换成树形结构数组
 * @param array $items 要进行转换的数组
 * return array $items 转换完成的数组
 */
function arrayToTree(Array $items) {
     foreach ($items as $item) {
        $items[$item['pid']]['son'][$item['id']] = &$items[$item['id']];
    }
    return isset($items[0]['son']) ? $items[0]['son'] : array();
}

/**
 * @方法二:将数据格式转换成树形结构数组
 * @param array $items 要进行转换的数组
 * return array $items 转换完成的数组
 */
function arrayToTree2(Array $items) {
    $tree = array();
   foreach ($items as $item){
		if (isset($items[$item['pid']])) {
            $items[$item['pid']]['son'][] = &$items[$item['id']];
        } else {
            $tree[] = &$items[$item['id']];
        }
	}
    return $tree;
}

print_r(arrayToTree($items));