如何使用array_multisort对两个+一个数组,通过数组键的总和进行排序?

时间:2012-10-13 07:50:22

标签: php arrays sorting

例如,如果这些是我的数组:

array (4) {
  [0] => 6,
  [1] => 7,
  [2] => 8,
  [3] => 9
}

array (4) {
  [0] => 10,
  [1] => 1,
  [2] => 3,
  [3] => 5
}

这个数组,我要排序:

array (4) {
  [0] => 'foo1',
  [1] => 'foo2',
  [2] => 'foo3',
  [3] => 'foo4'
}

我会得到最终结果(排序后):

array (4) {
  [0] => 'foo1',
  [1] => 'foo4',
  [2] => 'foo3',
  [3] => 'foo2'
}

这可能吗?请注意,我通过对前两个数组中相同键的总和所提供的第三个数组进行排序来获得最终数组。

任何帮助?

2 个答案:

答案 0 :(得分:2)

$arr1 = array(6,7,8,9);
$arr2 = array(10,1,3,5);
$arr3 = array('foo1','foo2','foo3','foo4');
$arr = array();

foreach($arr1 as $key => $item){
    $arr[] = $arr1[$key]  + $arr2[$key];
}
arsort($arr);

$res = array();
foreach($arr as $key => $value){
    $res[] = $arr3[$key];
}

print_r($res);

答案 1 :(得分:0)

您也可以尝试这样

$arr1 = array(6,7,8,9);
$arr2 = array(10,1,3,5);
$arr3 = array('foo1','foo2','foo3','foo4');
    foreach($arr1 as $key => $val){
        $arr2[$key] += $arr1[$key];
    }

    $arr = array_multisort($arr2, $arr3);
    $arr3 = array_reverse($arr3);
    print_r($arr3);