我只是想找到一種方法來使服務器資源有效的方式來排序和顯示按字母順序排序的父/子結構。我不是一個專業的程序員,所以我下面的代碼是蹩腳的,但它的工作原理,也許你可以幫助我優化它。優化MYSQL + PHP的父子輸出
表是
ID,parentId的,名稱。
parentid對於父母是0,對於孩子是= id。
的任務是顯示按字母順序排列的父母和父母下的所有孩子,也按字母順序排序。所有項目都應該有名稱及其相應的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
我沒有得到什麼你的意思是慢? –