Php 使用另一个数组对数组排序
我有一个产品数组,我想用另一个数组对它们进行排序Php 使用另一个数组对数组排序,php,Php,我有一个产品数组,我想用另一个数组对它们进行排序 $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' );
$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\u multisort。我已经尝试了两个小时的不同方法…
array\u multisort
对第二个数组进行排序,并将排序顺序应用于第一个数组。要执行任务,排序数组必须是$sort=array(2,0,1)代码>(意味着:将第二个元素设为0,将第三个元素设为1,将第一个元素设为2)
您只需使用
foreach ($sort as $key) {
$sorted_products[] = $products[$key];
}
这似乎比一种分类更合适:
$products = array_map(function($i) use ($products) {
return $products[$i];
}, $sort);
array\u multisort()
无法实现您试图使用该特定代码实现的目标
下面是一个函数,它将:
function sort_by_other_array ($input, $order) {
$result = array();
foreach ($order as $item) {
$result[] = $input[$item];
}
return $result;
}
这不会检查错误,但会执行您想要的操作。您可能需要添加检查以确保$order
中指定的键存在于$input
元素索引是否总是与$sort
数组中的数字匹配?我认为数组(1,2,0)
应该是3,1,2
,如果需要2,3,1
,您应该使用数组(2,0,1)
Vyktor是正确的如果你想使用array\u multisort($sort$products)
,数组必须是[2,0,1]
。可以这样想:“我希望$products
的第一个元素是@index 2,第二个元素是index 0,第三个元素是index 1。”对于当前数组,您只需要使用某种形式的迭代(即数组映射
)作为给出的答案说明。+1,因为如果我之前读过这篇文章,我不需要对这个问题本身留下评论。事实上,有没有其他方法来写这个问题?Dreamweaver认为它无效php@tuurbo,它对PHP5.3+有效。Dreamweaver认为它是否有效无关紧要。。。其他任何一个答案都适用于旧版本的PHP。