php 处理树状及无限极处理

/**
     * 数组的合并,并加上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);

    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值