如何将多维数组键作为树返回?

时间:2013-05-18 06:48:42

标签: php mysql codeigniter treeview php-5.3

我正在开发一个MLM应用程序,我需要将所有用户显示为树。为此,实现了用户之间的父子关系。我的表结构在这里: -

enter image description here

我根据关系在多维数组中检索用户的id。这是数组: -

enter image description here

为此,我使用了这段代码: -

<?php
$con = mysql_connect('localhost', 'root', '');
mysql_select_db('testapp', $con);

function create_tree( $parent_id = 0 )
{
    $result_array = array();
    $Query = 'SELECT * FROM `user` WHERE `parent`=\''.$parent_id.'\';';
    $query_result = mysql_query($Query);
    if(mysql_num_rows($query_result)>0)
    {
        while($row = mysql_fetch_assoc($query_result))
        {
            if(!array_key_exists($row['user_id'], $result_array))
            {
                //$result_array[$row['user_id']] = $row;
                $result_array[$row['user_id']] = create_tree($row['user_id']);
            }
        }
    }
    return $result_array;
}
$tree = create_tree();
print_r($tree);

现在,我需要以树形结构显示数据,如: - enter image description here

任何提示都会有所帮助。我非常接近完成这个......

2 个答案:

答案 0 :(得分:0)

是的,你离我很近.. !!

尝试下面它会对你有用..

<?php
$con = mysql_connect('localhost', 'root', '');
mysql_select_db('testapp', $con);

function create_tree( $parent_id = 0 ,$result_array = array())
{

$Query = 'SELECT * FROM `user` WHERE `parent`=\''.$parent_id.'\';';
$query_result = mysql_query($Query);
if(mysql_num_rows($query_result)>0)
{
    while($row = mysql_fetch_assoc($query_result))
    {
        if(!array_key_exists($row['user_id'], $result_array))
        {
            //$result_array[$row['user_id']] = $row;
            $result_array[$row['user_id']] = create_tree($row['user_id'],$result_array);
        }
    }
}
return $result_array;
}
$tree = create_tree();
print_r($tree);
?>

如果这对你不起作用,请告诉我.. !!

谢谢..

答案 1 :(得分:0)

试试看,它应该给你结构;

function create_tree( $parent_id = 0 , $result_array = array() )
{
    //$result_array = array();
    $Query = 'SELECT * FROM `user` WHERE `parent`=\''.$parent_id.'\';';
    $query_result = mysql_query($Query);
    if(mysql_num_rows($query_result)>0)
    {
        while($row = mysql_fetch_assoc($query_result))
        {
            if(!array_key_exists($row['user_id'], $result_array))
            {
                //$result_array[$row['user_id']] = $row;
                $result_array[$row['user_id']] = create_tree($row['user_id'], $result_array[$row['user_id']]);
            }
        }
    }
    return $result_array;
}

编辑;忘记了删除函数中的result_array