Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何显示多级一对多关系树_Php_Html_Mysql_Parent Child_Multi Level - Fatal编程技术网

Php 如何显示多级一对多关系树

Php 如何显示多级一对多关系树,php,html,mysql,parent-child,multi-level,Php,Html,Mysql,Parent Child,Multi Level,如何使用HTML循环所有记录并显示所有相应的子项?我尝试使用PHP Do,但只停留在1级 MySQL从用户选择* 期望输出 树视图 列表视图 最简单的方法是在数组的帮助下完成。希望能有帮助 $data = array(); foreach ($result as $item) { $key = $item['name']; // or $item['info_id'] if (!isset($data[$key])) { $data[$key] = array()

如何使用HTML循环所有记录并显示所有相应的子项?我尝试使用PHP Do,但只停留在1级

MySQL从用户选择*

期望输出

树视图

列表视图


最简单的方法是在数组的帮助下完成。希望能有帮助

$data = array();
foreach ($result as $item) {
    $key = $item['name']; // or $item['info_id']
    if (!isset($data[$key])) {
        $data[$key] = array();
    }

    $data[$key][] = $item;
}
您可以使用以下代码:

$aResults; // it is your mysql result (array)

$resultSorted = array();
$resultSorted = recursiveList($aResults, '');

function recursiveList(&$aResults, $iKey)
{
    $aChilds = '<ul>';
    foreach ($aResults as $iLoopKey => $aResult) {
        if ($aResult['parent'] == $iKey) {
            unset($aResults[$iLoopKey]);
            $aChilds .= '<li>' . $aResult['name'] . '</li>';
            $aChilds .= recursiveList($aResults, $aResult['name']);
        }
    }
    return $aChilds . '</ul>';
}

// Output example
echo '<pre>';
print_r($resultSorted);
因此,我得到:


此外,您最好在表中使用“parent\u id”而不是“parent”。

从用户中选择name,其中parent='jason'您需要的输出是什么?@AnkitAgrawal我已更新了所需的输出您通常会存储父项的id。否则,为什么还要麻烦id呢?嗨,我已经更新了我的问题,你的答案仍然有效?