Как закодировать все записи и отобразить все соответствующие дочерние элементы с помощью 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' в ваших таблицах.