2010-08-12 74 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