Как зациклить все записи и отобразить все соответствующие дочерние элементы, используя HTML <ul></ul>
? Я пытался использовать PHP Do While, но застрял только на 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_id» вместо «parent» в ваших таблицах.