使用usort和strcomp重新排序PHP数组:bug

时间:2010-08-12 11:19:58

标签: php strcmp usort

使用usort和strcomp一起按其中一个键对数组进行排序有一个奇怪的效果:它返回的数组中包含的项目数量少于我输入的项目。

我的情况下的数组包含代表任务的行,我想通过键'displayorder'对数组中的行进行排序,这是一个数字,但我想按字母方式排序(不要问为什么)。

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

usort($tree, "treeSort");

有九排,但我只有六排。顺便说一句,这六个很好地排序。如果我使用uasort而不是usort,我会得到所有九行,但是以数字方式排序。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:array_multisort。如果我已经向你提供了$ tree的详细信息,那么这可能就是你提出的Tim。

从array_multisort文档中的示例中获取代码:

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