Php 如何按自定义顺序对数组排序

Php 如何按自定义顺序对数组排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个数组,我想按特定的顺序输出值。我怎么能做到这一点 排列 输出我想要的 37 56 43 32 48 我已将数组$age放入foreach循环中。我在foreach循环外创建了另一个数组。如果值=xx,我将执行数组推送。它不起作用 最好的方法是什么,这样我才能按照上面的顺序得出结果。我不确定,我正确理解了你的问题,但是如果你已经知道了顺序,那么制作这个数组的目的是什么 嗯,我想我有两种解决方案可以按照您的自定义顺序对这个数组进行排序 选择1 如果您已经知道$order数组,请指定它,并使

我有一个数组,我想按特定的顺序输出值。我怎么能做到这一点

排列

输出我想要的

37
56
43
32
48
我已将数组$age放入foreach循环中。我在foreach循环外创建了另一个数组。如果值=xx,我将执行数组推送。它不起作用


最好的方法是什么,这样我才能按照上面的顺序得出结果。

我不确定,我正确理解了你的问题,但是如果你已经知道了顺序,那么制作这个数组的目的是什么

嗯,我想我有两种解决方案可以按照您的自定义顺序对这个数组进行排序

选择1 如果您已经知道$order数组,请指定它,并使用usort比较$age和$order数组的值。usort将在$order数组中查找$age的项目

我用过 在usort中,使排序更简单

输出

你可以查一下

选择2 根据您的评论,我尝试提出另一种方法,即在$age和$order数组中设置键,并比较这两个数组以按自定义顺序排序

$order = array('students', 'adults', 'disable', 'enable', "variable");
$age = array(
    'variable' => 48,
    'students' => 37,
    'disable' => 43,
    'adults' => 56,
    'enable' => 32
);

$ordered_array = array_merge(array_flip($order), $age);
print_r($ordered_array);
输出

也检查 和


我不理解排序逻辑…它背后的魔力是什么?如果排序逻辑是固定的,那么你的另一个数组就是排序数组。如果没有,你需要更清楚地了解它。最好的方法是usort,因为你可以用它创建自己的算法。也就是说,我不知道你用什么算法来排序。这背后的逻辑是,每个年龄段的人都是另一个表中的外键。所以37是学生,56是成人,43是残疾人…所以我想先看看学生,比成人比残疾人等等…如果你知道顺序,为什么你需要这个数组?此外,使用年龄作为角色的外键听起来不可思议。
$order = array(37, 56, 43, 32, 48);
$age = array(48, 37, 43, 56, 32);

usort($age, function ($a, $b) use ($order) {
    $firstItem  = array_search($a, $order);
    $secondItem = array_search($b, $order);

    return $firstItem - $secondItem;
});

print_r($age);
Array
(
    [0] => 37
    [1] => 56
    [2] => 43
    [3] => 32
    [4] => 48
)
$order = array('students', 'adults', 'disable', 'enable', "variable");
$age = array(
    'variable' => 48,
    'students' => 37,
    'disable' => 43,
    'adults' => 56,
    'enable' => 32
);

$ordered_array = array_merge(array_flip($order), $age);
print_r($ordered_array);
Array
(
    [students] => 37
    [adults] => 56
    [disable] => 43
    [enable] => 32
    [variable] => 48
)