2012-10-08 45 views
2

我想基於一列命令對大數組進行排序。數組的構建方式不允許我在查詢中做太多排序,但是我想知道在PHP中是否有比PHP更快的方法?數組排序比array_multisort更快?

我的代碼是:

foreach ($returnArr as $key => $row) { 
    $tmp[$key] = $row['orders']; 
} 

array_multisort($tmp, SORT_DESC, $returnArr); 

我也彌補建議我如何能建立一個單一的查詢,並有一些我在那裏的條件僅適用於單個列。如果這是可能的,那麼我只能用MySQL而不是PHP來做到這一點。

+0

**請參閱以下問題:**
http://stackoverflow.com/questions/4710457/fastest-way-of-sorting-multidimensional-arrays-in-php –

回答

0

難以回答沒有您的查詢,但我懷疑是否multisort是你想要的。它本質上也是對你的列名進行排序,你可以在查詢本身中輕鬆完成。您也可以讓數據庫爲您的值進行排序,所以你的查詢看起來是這樣的:

select 
    Col_AAA, Col_BBB, Col_HHH, Col_ZZZ 
from 
    YourTable 
order by 
    Col_AAA, Col_BBB, Col_HHH, Col_ZZZ 

這將返回排序的值,並在您指定的順序列。

0

如果array_multisort()是答案,那麼問題是錯誤的。我還沒有看到array_multisort是必要的情況,PHP數組是一個非常強大的數據結構,因此multisorting並不是非常必要的。

爲什麼要從$returnArr獲取所有訂單,然後將這個數組與$ tmp一起排序?您應該簡單地按照保存數組鍵的方式對$ tmp進行排序,如果要迭代此$ tmp數組,則foreach中的鍵與也指向$ returnArr的鍵相同 - 您可以訪問匹配的數據在$ returnArr中設置,而不必對其進行排序。 $ tmp和$ returnArr中的相同鍵總是屬於同一個數據集。

另一方面,你沒有說明你想做什麼。