我有一个数组,我想按特定顺序输出价值。我该怎么做。
数组
$age = array(48,37,43,56,32);
我想要的输出
37
56
43
32
48
我已将array $age
放入foreach
循环中。我在foreach
循环之外创建了另一个数组。如果array Push
,我正在做value = xx
。它不起作用。
最好的方法是什么,这样我才能使结果按上述顺序显示。
答案 0 :(得分:0)
我不确定,我能正确理解您的问题,但是如果您已经知道顺序,那么创建此数组的目的是什么。
好吧,我想我有两种解决方案可以按照您的自定义顺序对该数组进行排序
指定$order
数组(如果您已经知道),然后使用usort
比较$age
和$order
数组的值。 usort
将在$age
数组中找到$order
的项目。
$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);
我用过closure
usort
中使排序更简单
输出
Array
(
[0] => 37
[1] => 56
[2] => 43
[3] => 32
[4] => 48
)
您可以检查usort和 array_search
从您的评论中,我试图提出另一种方法,该方法是在$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);
输出
Array
(
[students] => 37
[adults] => 56
[disable] => 43
[enable] => 32
[variable] => 48
)
也检查 array_merge和 array_flip