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

php按预定义顺序对数组排序,php,arrays,sorting,Php,Arrays,Sorting,我正在努力尝试通过普通函数对数组进行排序,我确信这需要一个自定义的比较函数,但无论如何都不会放弃它 我有一个数组,里面有5个元素。我希望数组按此方式进行排序,arsort很接近,但不完全: 4,0,1,2,3 为了澄清一下,数组的位置如下:$array[0] 我以前没有真正研究过数组比较函数,所以朝着正确的方向推动将非常有助于解决这个问题 谢谢 亚当试试这个 $array = array('t','r','a','c','k'); $keys = '4,0,1,2,3'; $keyArr =

我正在努力尝试通过普通函数对数组进行排序,我确信这需要一个自定义的比较函数,但无论如何都不会放弃它

我有一个数组,里面有5个元素。我希望数组按此方式进行排序,arsort很接近,但不完全:

4,0,1,2,3

为了澄清一下,数组的位置如下:$array[0]

我以前没有真正研究过数组比较函数,所以朝着正确的方向推动将非常有助于解决这个问题

谢谢

亚当试试这个

$array = array('t','r','a','c','k');
$keys = '4,0,1,2,3';

$keyArr = explode(',', $keys);
$sarr = array();

foreach ($keyArr as $key)
{
    $sarr[$key] = $array[$key];
}
print_r($sarr);
试试这个:

$numbers = array(1,2,3,4,5);
array_unshift($numbers, array_pop($numbers));

echo "<pre>";
print_r($numbers);

此方法将使用预定义的键顺序对数组进行排序

请注意,
$desiredIndexOrder
数组采用
索引=>所需排序位置
格式。如果您不想将数组置于该格式,可以使用以下方法为您构建它:


其中,
$desiredKeyOrder
是键的数组顺序:
数组(4,0,1,2,3)

您可以使用自定义比较函数对数组进行排序。是否认为在字符串周围加引号很重要?还有,这也不行。谢谢你指出这一点。我已经更新了密码。谢谢科林,这正是我想要的。“同样使用比较函数完美地回答了我的问题。”AdamHall很乐意帮忙
Array
(
    [0] => 5
    [1] => 1
    [2] => 2
    [3] => 3
    [4] => 4
)
$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 = array();

foreach ($desiredKeyOrder as $position=>$key) {
    $desiredIndexOrder[$key] = $position + 1;
}