这个问题在这里已经有了答案:
How do I sort the following array? [duplicate]
(3 个回答)
8 年前关闭。
我正在努力尝试通过普通函数对数组进行排序,我确定这需要一个自定义比较函数,但仍然会在那里扔掉它。
我有一个包含 5 个元素的数组。我希望数组像这样对自己进行排序,arsort 接近但不完全:
4,0,1,2,3
只是为了澄清,数组的位置如下: $array[0];
我之前实际上没有研究过数组比较函数,因此朝着正确的方向插入对解决这个问题最有帮助!
谢谢,
亚当
最佳答案
此方法将使用 uksort
使用预定义的键顺序对数组进行排序。
$desiredIndexOrder = array(4 => 1, 0 => 2, 1 => 3, 2 => 4, 3 => 5);
uksort($inputArray, function($a, $b) use ($desiredIndexOrder) {
return $desiredIndexOrder[$a] > $desiredIndexOrder[$b] ? -1 : 1;
});
注意
$desiredIndexOrder
数组在 index => desired sort position
格式。如果您不想将数组置于该格式中,则可以使用以下命令为您构建它:$desiredIndexOrder = array();
foreach ($desiredKeyOrder as $position=>$key) {
$desiredIndexOrder[$key] = $position + 1;
}
哪里
$desiredKeyOrder
是您的键的数组顺序:array(4, 0, 1, 2, 3)
关于php按预定义的顺序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294932/