2010-08-12 78 views
0

使用usort和STRCOMP在一起,其關鍵之一下令陣列有一個奇怪的效果:它返回我的陣列,以在它較少的項目比我把重新排序PHP數組usort和STRCOMP:錯誤

。在我的情況下,數組包含表示任務的行,我想通過鍵'displayorder'排序數組中的行,這是一個數字,但是我想按字母順序排序(不要問爲什麼)。

function treeSort($a, $b) { 
     return strcmp(strval($a['displayOrder']), strval($b['displayOrder'])); 
    } 

usort($tree, "treeSort"); 

有9排,但我只得到他們六回。順便說一下,這六個排序很好。如果我使用uasort而不是usort,我確實得到所有九行,但以數字方式排序。

+0

你能提供的一個例子$ tree'是如何'構成的?另外,什麼版本的PHP? – 2010-08-12 11:26:27

回答

0

我找到了一個解決方案:array_multisort。如果我給你提供$ tree的細節,那可能就是你提出的Tim。

得到了來自實例上在array_multisort文檔中的代碼:

foreach ($tree as $key => $row) { 
     $sortOrder[$key] = $row['displayOrder']; 
    } 
    array_multisort($sortOrder, SORT_STRING, $tree); 
+0

遲到,但謝謝!這個伎倆。 – Wytze 2010-12-17 15:37:27