龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

php 把返回的数据集转换成数组树

时间:2014-07-18 02:06来源:网络整理 作者:网络 点击:
分享到:
把返回的数据集转换成数组树 如$old = array(array(#39;id#39;=gt;1,#39;pid#39;=gt;0,#39;name#39;=gt;#39;第一个#39; ),array(#39;id#39;=gt;2,#39;pid#39;=gt;1,#39;name#39;=gt;#39;第二个#39; ) ,array(#39;id#39;=gt;3,#39;pid#39;=

$old = array(

array('id'=>1,'pid'=>0,'name'=>'第一个' ),

array('id'=>2,'pid'=>1,'name'=>'第二个' ) ,

array('id'=>3,'pid'=>2,'name'=>'第三个'),

);

print_r(list_to_tree($old,'id','pid','_child'));

输出如下

$old = array(

array(

'id'=>1,

'pid'=>0,

'name'=>'第一个',

'_child'=>array(

'id'=>2,

'pid'=>1,

'name'=>'第二个'

'_child'=>array('id'=>3,'pid'=>2,'name'=>'第三个'),

),

) ,

);

/**
 * 把返回的数据集转换成Tree
 * @access public
 * @param array $list 要转换的数据集
 * @param string $pid parent标记字段
 * @param string $level level标记字段
 * @return array
 */
function list_to_tree($list, $pk='id',$pid = 'pid',$child = '_child',$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
            $parentId = $data[$pid];
            if ($root == $parentId) {
                $tree[] =& $list[$key];
            }else{
                if (isset($refer[$parentId])) {
                    $parent =& $refer[$parentId];
                    $parent[$child][] =& $list[$key];
                }
            }
        }
    }
    return $tree;
}
//该片段来自于http://outofmemory.cn
精彩图集

赞助商链接