林建立一個簡單的專輯和跟蹤網絡應用程序,但即時通訊檢索正確的信息,並使其高效進入泡菜。我有兩個表 - 這張專輯有大約500個項目和跟蹤約5000陣列比較,雖然循環和效率
於是我開始用正常while循環:
$albumQuery = "SELECT * FROM `album` ORDER BY album ASC";
$albumDatabase = mysql_query($albumQuery, $admin) or die(mysql_error());
while($albumRow = mysql_fetch_array($albumDatabase)){
$list = "";
$list.="build some html for showing later";
這是我進入一個efficency問題:
$trackQuery = "SELECT track, album FROM `track` WHERE album = '{$album}' ORDER BY filename ASC";
$trackDatabase = mysql_query($trackQuery, $admin) or die(mysql_error());
while($trackRow = mysql_fetch_array($trackDatabase)){
$list.="track html info";
}
$listarray[] = $list;
}
natcasesort($listarray);
然後我在身體
foreach ($listarray as $v){
$first_letter = strtoupper(mb_substr($v,9,1));
if($tmp!==$first_letter){
$tmp = $first_letter;
echo '<div class="alphaHolder">'.$tmp.'</div>';
}
echo $v;
}
這工作完全後運行一個foreach,一部分可能可能是大規模不足的。
我可以讓它以正確的方式和順序反芻所有的信息。
作爲一個實驗,我將第二個while循環放在父循環之外,並將此信息粘貼到它自己的數組中。然後跑了這一點:
foreach($trackArray as $k => $v){
if(in_array($v['album'], $albumRow)){
$list.="track html info";
}
}
但後來我意識到,每一次它貫穿於母公司循環的重新運行超過5000項,然後做in_array 500倍的foreach。這顯然需要很長時間,並且通常會使瀏覽器崩潰。帶領我到最初的嵌套while循環稍微更高效和複雜。
我已經開始認爲array_intersect可能是解決方案,但我不想ark出錯的樹。
可能有太多的循環,你在做什麼,但我需要自然排序和alpha /數值標題返流。
的screenie:http://ink361.com/#/photos/133115598501394804_9688917
你忘了提及一些東西。作爲整個混亂的目標**這樣的小事情。你的目標是什麼?在單個頁面上構建5000首曲目列表? – 2012-02-28 09:50:12
是一個完整的頁面,包含所有相冊,然後是每個相冊下面的相應曲目。 – MarkBeharrell 2012-02-28 10:19:49
那麼,我可以告訴你,一個包含5000行的HTML頁面總是效率低下,速度慢。 – 2012-02-28 10:21:12