PHP - 关联数组上的多重排序

时间:2014-01-08 17:15:33

标签: php arrays array-multisort

考虑以下关联数组:

$arrEmployees['marco polo'] = array(age => 40, service => 5);
$arrEmployees['jane austen'] = array(age => 30, service => 9);
$arrEmployees['carl marx'] = array(age => 30, service => 7);

如何使用array_multisort按年龄desc和服务asc进行排序? php.net中的示例#3似乎只适用于数字索引...

1 个答案:

答案 0 :(得分:1)

$arrEmployees['marco polo'] = array(age => 40, service => 5);
$arrEmployees['jane austen'] = array(age => 30, service => 9);
$arrEmployees['carl marx'] = array(age => 30, service => 7);

foreach ($arrEmployees as $key => $row) {
    $age[$key]  = $row['age'];
    $service[$key] = $row['service'];
}

array_multisort($age, SORT_DESC, $service, SORT_ASC, $arrEmployees);

var_dump($arrEmployees);

给出

array(3) {
  ["marco polo"]=>
  array(2) {
    ["age"]=>
    int(40)
    ["service"]=>
    int(5)
  }
  ["carl marx"]=>
  array(2) {
    ["age"]=>
    int(30)
    ["service"]=>
    int(7)
  }
  ["jane austen"]=>
  array(2) {
    ["age"]=>
    int(30)
    ["service"]=>
    int(9)
  }
}

这是正确的,并且所有关联索引仍然完好