我有一個問題,通過usort()函數處理更長的PHP數組。 我想排序一個數組,如「1.1」,「2.3」,「1.1.2」,「3.1」,30,「3.10」...... 如果我只處理幾個元素,一切正常精細。但是,如果我有40個元素的數組,功能簡直是太慢了 - 這麼慢,它甚至覆蓋了90秒的超時...PHP - usort函數太慢
我的代碼:
function mySort($a,$b) {
$a_arr = explode(".",$a);
$b_arr = explode(".",$b);
if ($a_arr[0] < $b_arr[0]) {return -1;break;}
if ($a_arr[0] > $b_arr[0]) {return 1;break;}
for($i=0;$a_arr[$i]==$b_arr[$i];$i++){
if ($a_arr[$i+1] < $b_arr[$i+1]) {return -1;break;}
if ($a_arr[$i+1] > $b_arr[$i+1]) {return 1;break;}
}
}
$sort_array = array("1.1","2.3","1.1.2","3.1","30","3.10"); //example, I take this data from the database
usort($sort_array,"mySort");
...任何人都可以請幫助?有沒有可能解決這個問題?任何幫助將不勝感激。
在此先感謝。
你到底有什麼'在那裏break'?代碼已經有了'return'ed,並且break永遠不會被執行。 –
什麼是for循環?我不明白......,你能否解釋你的排序算法需要做什麼?分享期望的輸出。 – elclanrs
不會使用version_compare()會更有效地將此細分爲子排列 –