/**
* 数组的合并,并加上html标识前缀
* @param array $data
* @param int $pid
* @param string $html
* @param int $level
* @return array
*/
public function treeLevel(array $data, $pid = 0, $html = '---', $level = 0) {
static $arr = [];
foreach ($data as $val) {
if ($pid == $val['pid']) {
// 重复一个字符多少次
$val['html'] = str_repeat($html, $level * 2);
$val['level'] = $level + 1;
$arr[] = $val;
$this->treeLevel($data, $val['id'], $html, $val['level']);
}
}
return $arr;
}
/**
* 数据多层级
* @param array $data
* @param int $pid
* @return array
*/
public function subTree($data, $pid = 0) {
// 返回的结果
$arr = [];
foreach ($data as $val) {
// 给定的PID是当前记录的上级ID
if ($pid == $val['pid']) {
// 递归
$val['sub'] = $this->subTree($data,$val['id']);
$arr[] = $val;
}
}
return $arr;
}
//引用
public function wxj(){
$items = 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' => 2, 'name' => '哈尔滨市' ),
5 => array ( 'id' => 5, 'pid' => 2, 'name' => '鸡西市' ),
6 => array ( 'id' => 6, 'pid' => 4, 'name' => '香坊区' ),
7 => array ( 'id' => 7, 'pid' => 4, 'name' => '南岗区' ),
8 => array ( 'id' => 8, 'pid' => 6, 'name' => '和兴路' ),
9 => array ( 'id' => 9, 'pid' => 7, 'name' => '西大直街' ),
10 => array ( 'id' => 10, 'pid' => 8, 'name' => '东北林业大学' ),
11 => array ( 'id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学' ),
12 => array ( 'id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学' ),
13 => array ( 'id' => 13, 'pid' => 1, 'name' => '赣州市' ),
14 => array ( 'id' => 14, 'pid' => 13, 'name' => '赣县' ),
15 => array ( 'id' => 15, 'pid' => 13, 'name' => '于都县' ),
16 => array ( 'id' => 16, 'pid' => 14, 'name' => '茅店镇' ),
17 => array ( 'id' => 17, 'pid' => 14, 'name' => '大田乡' ),
18 => array ( 'id' => 18, 'pid' => 16, 'name' => '义源村' ),
19 => array ( 'id' => 19, 'pid' => 16, 'name' => '上坝村' ),
);
$tree = array (); //格式化好的树
foreach ( $items as $item )
if (isset( $items [ $item [ 'pid' ]]))
$items [ $item [ 'pid' ]][ 'son' ][] = & $items [ $item [ 'id' ]];
else
$tree [] = & $items [ $item [ 'id' ]];
dd($tree);
}