zoukankan      html  css  js  c++  java
  • php 二维数组转换成树状数组(转)

    <?php
    /**
    * @param array $list 要转换的结果集
    * @param string $pid parent标记字段
    * @param string $level level标记字段
    */
    function list_to_tree($list, $pk='id', $pid = 'pid', $child = 'listArea', $root = 0) {
    //创建Tree
    $tree = array();

    if (is_array($list)) {
    //创建基于主键的数组引用
    $refer = array();

    foreach ($list as $key => $data) {
    $refer[$data[$pk]] = &$list[$key];
    }

    foreach ($list as $key => $data) {
    //判断是否存在parent
    $parantId = $data[$pid];

    if ($root == $parantId) {
    $tree[] = &$list[$key];
    } else {
    if (isset($refer[$parantId])) {
    $parent = &$refer[$parantId];
    $parent[$child][] = &$list[$key];
    }
    }
    }
    }

    return $tree;
    }

    $arr = array(
    array('id'=>1,'pid'=>0,'name' => urlencode('大连'), 'code' => 'dd', 'listArea' => array()),
    array('id'=>2,'pid'=>1,'name' => urlencode('香港'), 'code' => 'dd', 'listArea' => array()),
    array('id'=>4,'pid'=>3,'name' => 'm', 'code' => 'dd', 'listArea' => array()),
    array('id'=>2,'pid'=>1,'name' => 'gg', 'code' => 'aa', 'listArea' => array()),
    array('id'=>3,'pid'=>1,'name' => 'e', 'code' => 'dd', 'listArea' => array())
    );
    //$array = array(array('id'=>0,'pid'=>0,'name' => '全国'));
    //$array2 = array_merge($array, $arr);
    //array_push($arr, $array);

    //print_r($array);exit;

    $tree = list_to_tree($arr);
    echo json_encode($tree);

    注意:不会显示没有子节点的对象

  • 相关阅读:
    挂载nfs网络共享目录到本地目录报错
    ubuntu18.04,centos7.7下安装nfs详细步骤
    linux的fstab配置文件
    nginx整合php后,浏览器访问.php文件报错
    centos中安装php7.3.13(目前最新版)
    skills_nginx
    problems_ubuntu
    problems_nginx
    docker中部署halo
    数论学习
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3229641.html
Copyright © 2011-2022 走看看