php按预定义的顺序排序数组

eve*_*sis 2 php arrays sorting

我正在努力尝试通过正常的函数对数组进行排序,我确信这需要一个自定义的比较函数,但不过会把它扔掉.

我有一个包含5个元素的数组.我希望数组能够这样排序,arsort接近但不完全:

4,0,1,2,3

只是为了澄清,数组的位置如:$ array [0];

我之前没有真正研究过数组比较函数,所以正确推动将最有助于解决这个问题!

谢谢,

亚当

Col*_*n M 12

此方法将使用预定义的键顺序对数组进行排序 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;
});
Run Code Online (Sandbox Code Playgroud)

请注意$desiredIndexOrder数组的index => desired sort position格式.如果您不想将数组放在该格式中,可以使用以下方法为其构建:

$desiredIndexOrder = array();

foreach ($desiredKeyOrder as $position=>$key) {
    $desiredIndexOrder[$key] = $position + 1;
}
Run Code Online (Sandbox Code Playgroud)

$desiredKeyOrder键的数组顺序在哪里:array(4, 0, 1, 2, 3)