Я просто пытаюсь найти способ эффективного использования ресурса сервера и ресурса сортировки и отображения структуры родительских/дочерних элементов в алфавитном порядке. Я не профессиональный программист, поэтому мой код ниже хромой, но он работает, и, возможно, вы можете помочь мне оптимизировать его.Оптимизация вывода родительских детей MYSQL + PHP
таблица
идентификатор, ParentId, имя.
parentid is 0 для родителей и = id для детей.
Задача состоит в том, чтобы показать отсортированные по алфавиту родители и всех детей под родителями, также отсортированные по алфавиту. Все элементы должны иметь имена и соответствующие им идентификаторы. Структура такова:
AAA
BBB
-> eee of BBB
-> ooo of BBB
-> zzz of BBB
CCC
DDD
-> mmm of DDD
-> nnn of DDD
EEE
FFF
...
Это мой глупый код, однако он работает. MySQL сортирует все элементы по алфавиту, а PHP просто перебирает уже отсортированные имена, выбирая и показывая дочерние элементы для каждого родителя. Мне не нравится этот дополнительный цикл, который запускается для каждого родительского элемента, может быть, кто-то может предложить лучший способ с точки зрения производительности?
$sqlquer="SELECT id, parentid, name FROM mytable ORDER BY name";
$ath = mysql_query($sqlquer);
while ($row = mysql_fetch_array($ath)) {
if ($row[parentid]==0) $parents[]=$row;
else $children[]=$row;
}
foreach($parents as $par)
{
echo("$par[name]($par[id])<br>");
foreach($children as $ch)
{ if ($ch[parentid]==$par[id])
echo("->$ch[name]($ch[id])<br>");
}
}
Вот такая же ситуация, как и вы. Вы можете изменить решение и использовать его как свой выход. Http://stackoverflow.com/questions/21306338/php-mysql-multidimensional-array-dropdown-menu/21308976#21308976 –
Это действительно медленный ??? – Steve
Я не понял, что вы подразумеваете под медленным? –