使用另一个数组排序数组

时间:2012-01-19 23:53:03

标签: 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'
);

我似乎没有正确使用array_multisort。我现在尝试了不同的方式2小时......

3 个答案:

答案 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中指定的密钥。