2014-09-29 63 views
0

我試圖按類類型排列玩家角色數組(遊戲中)。每個球員的等級都由一個數字表示。我寧願按照字母順序排列班級,而不是根據我的數據如何定義每個班級來進行數字排列。重新編號以改變usort命令導致看起來隨機排序

我的代碼是這樣的:

$AlphabeticalClass = array(
    1 => 11, 
    2 => 6, 
    3 => 3, 
    4 => 8, 
    5 => 7, 
    6 => 1, 
    7 => 9, 
    8 => 4, 
    9 => 10, 
    10 => 5, 
    11 => 2, 
); 

function CharacterSort($Char1, $Char2) 
{ 
    $c1 = $Char1['character']['class']; 
    $c2 = $Char2['character']['class']; 

    //$c1 = $AlphabeticalClass[$c1]; 
    //$c2 = $AlphabeticalClass[$c2]; 

    return strcmp($c1, $c2); 
} 

當意見是有,那種情況完全(儘管訂購類的方式,我不想):

Sorting working

當註釋被刪除,以便將類別重估值重新映射爲按字母順序排列:

Sorting not working

正如你在上面看到的,類的排序已經被拋出了窗口。任何想法是什麼導致了這一點?

usort應用到組織像這樣的數據數組:

Array of data

回答

0

如果類是數字,你可能想使用-而不是strcmp()

function CharacterSort($Char1, $Char2) { 
    $c1 = $Char1['character']['class']; 
    $c2 = $Char2['character']['class']; 

    return $c1 -$c2; 
} 

Demo

+0

你已經提交這個作爲答案,所以我不知道這是否只是一個一般說明。這並沒有解決問題。 – 2014-09-29 06:32:43

+0

@Joe看着你的數組數據(上圖),它是一個數字嗎? – Ghost 2014-09-29 06:37:18

+0

是的,它是一個數字。 – 2014-09-29 06:39:09