使用usort和strcomp一起按其中一个键对数组进行排序有一个奇怪的效果:它返回的数组中包含的项目数量少于我输入的项目。
我的情况下的数组包含代表任务的行,我想通过键'displayorder'对数组中的行进行排序,这是一个数字,但我想按字母方式排序(不要问为什么)。
function treeSort($a, $b) {
return strcmp(strval($a['displayOrder']), strval($b['displayOrder']));
}
usort($tree, "treeSort");
有九排,但我只有六排。顺便说一句,这六个很好地排序。如果我使用uasort而不是usort,我会得到所有九行,但是以数字方式排序。
答案 0 :(得分:0)
我找到了一个解决方案:array_multisort。如果我已经向你提供了$ tree的详细信息,那么这可能就是你提出的Tim。
从array_multisort文档中的示例中获取代码:
foreach ($tree as $key => $row) {
$sortOrder[$key] = $row['displayOrder'];
}
array_multisort($sortOrder, SORT_STRING, $tree);