zoukankan      html  css  js  c++  java
  • PHP 发布两个不用递归的树形数组构造函数(转)

    <?php
    /**
    *创建父节点树形数组
    * 参数 $ar 数组,邻接列表方式组织的数据 $id 数组中作为主键的下标或关联键名 $pid 数组中作为父键的下标或关联键名
    * 返回 多维数组
    **/
    function find_parent($ar, $id = 'id', $pid = 'pid') {
    foreach ( $ar as $v )
    $t [$v [$id]] = $v;
    foreach ( $t as $k => $item ) {
    if ($item [$pid]) {
    if (! isset ( $t [$item [$pid]] ['parent'] [$item [$pid]] ))
    $t [$item [$id]] ['parent'] [$item [$pid]] = & $t [$item [$pid]];
    }
    }
    return $t;
    }
    /**
    * * 创建子节点树形数组 * 参数 * $ar 数组,邻接列表方式组织的数据 * $id 数组中作为主键的下标或关联键名 * $pid
    * 数组中作为父键的下标或关联键名 * 返回 多维数组 *
    */
    function find_child($ar, $id = 'id', $pid = 'pid') {
    foreach ( $ar as $v )
    $t [$v [$id]] = $v;
    foreach ( $t as $k => $item ) {
    if ($item [$pid]) {
    $t [$item [$pid]] ['child'] [$item [$id]] = & $t [$k];
    }
    }
    return $t;
    }

    $data = array (
    array (
    'ID' => 1,
    'PARENT' => 0,
    'NAME' => '祖父'
    ),
    array (
    'ID' => 2,
    'PARENT' => 1,
    'NAME' => '父亲'
    ),
    array (
    'ID' => 3,
    'PARENT' => 1,
    'NAME' => '叔伯'
    ),
    array (
    'ID' => 4,
    'PARENT' => 2,
    'NAME' => '自己'
    ),
    array (
    'ID' => 5,
    'PARENT' => 4,
    'NAME' => '儿子'
    )
    );
    $p = find_parent ( $data, 'ID', 'PARENT' );
    $c = find_child ( $data, 'ID', 'PARENT' );
    print_r($c);exit;

  • 相关阅读:
    ubuntu16.04左边栏图标效果设置
    VMware虚拟机 Ubuntu 16.04 安装 VMware Tools
    微信换取openid的值
    thinkphp关于T方法
    Think关于循环的事
    base64格式转换为图片
    Think视图模型格式
    thinkphp里多表事务
    ThinkPHP数据库驱动之mysql事物回滚
    webhook是啥?
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3229410.html
Copyright © 2011-2022 走看看