2015-08-30 41 views
-1

所以我有被動,Q,Q2,W,W2,E,E2,R,R2的陣列,我希望按照我寫入的順序排列使用usort自定義排序php陣列

$SpellTitle = array("Passive", "W", "Q", "Q2", "W2", "R", "E", "E2", "R2"); 

我已閱讀關於使用usort(),但我真的不明白如何使用它。

更新!

$ SpellTitle是一個從數據庫加載的動態數組,因此長度將有所不同,它將隨機設置在該數組中。

+0

請詳細說明你有什麼和你想用usort實現什麼() –

+0

@Being Sunny我希望數組按照這個順序排序被動,Q,Q2,W,W2,E,E2,R,R2 – Higeath

+0

@Higeath 1)你有一個數組中的元素的順序嗎? 2)請在問題 – Rizier123

回答

0

usort將用戶定義的函數作爲第二個參數。該函數必須返回小於零,零或大於零的整數值。這個函數需要兩個參數 - 數組值要相互比較。如果第一個值比第二個值「低」,則函數返回一個小於零的值,否則大於零。如果值相等,則函數必須返回零。

所以,如果你想使該sotrs整數自定義函數或浮動值,你可以使用:

function cmp($a, $b) { 
    if((float) $a == (float) $b) { 
     return 0; 
    } else { 
     return ((float) $a < (float) $b) ? -1 : 1; 
    } 
} 
+0

我已經看到了這個函數,以及usort是如何工作的,問題在於如何使用函數本身 – Higeath

+0

用你自己的話說:我已經閱讀過有關使用usort()的內容,但我真的不明白如何使用它。 – Koval

+0

如果我只是想要的定義/解釋我不會附加我的數組和秩序我想獲得 – Higeath

0

使用PHP asort

ASORT - 對數組進行排序並保持索引協會。

實施例:

$SpellTitle = array("Passive", "W", "Q", "Q2", "W2", "R", "E", "E2", "R2"); 
asort($SpellTitle); 
print_r($SpellTitle); 

輸出:

Array 
(
    [6] => E 
    [7] => E2 
    [0] => Passive 
    [2] => Q 
    [3] => Q2 
    [5] => R 
    [8] => R2 
    [1] => W 
    [4] => W2 
) 

注意,陣列索引順序保持太。
希望得到這個幫助。

+0

這不是爲了我要求 – Higeath

+0

@Higeath,我明白你現在面臨的問題。我建議使用類別和子類別,其中類別是使用標準的順序並動態排序子類別。這樣,如果子類別長度發生變化,這不會成爲問題。 – mdamia