2010-08-20 214 views
1

有沒有什麼辦法來「自定義」排序數組?舉例來說,如果我有以下數字:如何對PHP數組進行排序?

$array = array('0' => 1, '1' => 2, '2' => 3); 

我想它命令他們以這種方式:

$array = array('0' => 2, '1' => 1, '2' => 3); 

我怎麼會做這個還是不可能?我基本上想要爲每個用戶在一個數據庫字段中列出此數組,但每個訂單將有所不同,具體取決於用戶如何對數組進行排序。

謝謝,傑克

+0

什麼是排序邏輯?什麼決定價值是向前還是向後? – Teekin 2010-08-20 23:01:11

回答

4

可以使用

  • usort - 排序通過使用用戶定義的比較函數
  • uksort值陣列- 通過排序陣列使用用戶定義的比較功能
  • uasort - 排序與用戶定義的比較函數和陣列保持索引關係

每個這些接受一個數組和一個user-defined comparison function aka callback。你放入比較函數的內容取決於你。從PHP5.3開始,您也可以使用SplHeaps to create ordered collections

+0

謝謝!我會研究這些:) – Jake 2010-08-20 22:59:28

0

,你可能還需要看看在array_multisort()

0

這可能是更好地讓數據庫排序檢索時的陣列與用戶的設置。我認爲這在PHP中排序幾乎總是可取的。

編輯: 我忘記了數組可能存儲爲單個對象,因此數據庫只是將它作爲對象而不是數組處理。要啓用還是服務器端(數據庫服務器)排序,陣列也可以表示爲單獨的表:

用戶名:索引0 用戶名:索引1 等等

但這可能給太多的數據開銷。