我有一系列产品,我想用另一个数组对它们进行排序。
$products = array(
0 => 'Pro 1',
1 => 'Pro 2',
2 => 'Pro 3'
);
$sort = array(1,2,0);
array_multisort($products, $sort);
数组应现在......
$products = array(
0 => 'Pro 2',
1 => 'Pro 3',
2 => 'Pro 1'
);
我似乎没有正确使用array_multisort。我现在尝试了不同的方式2小时......
答案 0 :(得分:9)
这似乎比排序更合适:
$products = array_map(function($i) use ($products) {
return $products[$i];
}, $sort);
答案 1 :(得分:1)
array_multisort
对第二个数组进行排序,并将排序顺序应用于第一个数组。为了完成你的工作,排序数组必须是$sort = array(2,0,1);
(暗示:将第二个元素带到0,第三个元素为1,第一个元素为2)。
你可以使用
foreach ($sort as $key) {
$sorted_products[] = $products[$key];
}
答案 2 :(得分:1)
array_multisort()
将无法完成您尝试使用该特定代码实现的目标。
这是一个函数:
function sort_by_other_array ($input, $order) {
$result = array();
foreach ($order as $item) {
$result[] = $input[$item];
}
return $result;
}
这不是错误检查,但会做你想要的。您可能需要添加检查以确保$order
中存在$input
中指定的密钥。