Как отобразить многоуровневое дерево отношений один ко многим

Как зациклить все записи и отобразить все соответствующие дочерние элементы, используя HTML <ul></ul>? Я пытался использовать PHP Do While, но застрял только на 1 уровне.

MySQL (выберите * у пользователя)

введите описание изображения здесь

Желаемый вывод

В виде дерева

введите описание изображения здесь

Посмотреть список

введите описание изображения здесь

0

Решение

Легко было сделать это с помощью массива. Надеюсь, поможет.

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

$data[$key][] = $item;
}
1

Другие решения

Вы можете использовать этот код:

$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_id» вместо «parent» в ваших таблицах.

0

По вопросам рекламы [email protected]