0

一起使用 usort 和 strcomp 通过其中一个键对数组进行排序有一个奇怪的效果:它返回的数组中的项目比我输入的要少。

在我的例子中,数组包含表示任务的行,我想通过键“displayorder”对数组中的行进行排序,这是一个数字,但我想按字母顺序排序(不要问为什么)。

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

usort($tree, "treeSort");

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

4

1 回答 1

0

我找到了一个解决方案:array_multisort。如果我向您提供有关 $tree 的详细信息,这可能就是您向 Tim 提出的建议。

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

foreach ($tree as $key => $row) {
        $sortOrder[$key] = $row['displayOrder'];
    }
    array_multisort($sortOrder, SORT_STRING, $tree);
于 2010-08-12T11:38:22.330 回答