2012-06-04 163 views
0

所以我有一個數組名爲$鏈接按字母排序多維數組無法正常工作?

array(
    [0] = array(
     'type' => 'thread' 
     'url' => 'blah blah blah' 
    ), 
    [1] = array(
     'type' => 'media' 
     'url' => 'blah blah blah' 
    ), 
    [2] = array(
     'type' => 'website' 
     'url' => 'blah blah blah' 
    ) 
); 

我所要做的排序是這樣排列的字母順序使用「類型」。對於這個我使用usort()

usort($links, create_function('$b, $a', 'return $a["type"] - $b["type"];')); 

的問題是,這是不實際排數組...它是所有反轉陣列。完成後,我會看到網站>媒體>線程。如果我第二次處理它,它會反轉回線程>媒體>網站。

最終結果應該是媒體>線程>網站。我錯過了什麼嗎?爲什麼這不正確排序?

+0

'回聲 「線」 - 「媒體」''→0' – deceze

回答

1

試試這個,而是:

usort($links, create_function('$a, $b', 'return strcmp($a["type"], $b["type"]);')); 
+0

謝謝...奏效。 –

+0

@JasonAxelrod它沒有爲你工作的原因是你試圖減去字符串,它不會像數字那樣工作; 'strcmp()'對字符串進行這種比較:) –

+0

非常感謝!我迄今爲止讀過的每一個答案都建議使用usort來排列數組中的數組,但是其中沒有一個提到strcmp,而我正在撕掉我的頭髮。這個答案和評論解釋了一切,讓我感到很蠢,因爲沒有及早解決它! :) – user3640967