php根据特定键排序多维数组

时间:2011-08-29 22:49:40

标签: php arrays sorting

我试图通过数组[key] ['premium'] ['每月']排序这个数组,如果有两个月价格相同,那么按季度排序,然后是半年度,然后是年度。

我搜索并无法弄清楚如何使用array_multisort函数。

Array (
[0] => Array (
    [product_id] => 1
    [rate] => 27.07
    [premium] => Array (
        [Annual] => 436.05
        [Semi-Annual] => 226.75
        [Quarterly] => 115.6
        [Monthly] => 37.11
    )
)
[1] => Array (
    [product_id] => 2
    [rate] => 35.00
    [premium] => Array (
        [Annual] => 565
        [Semi-Annual] => 293.8
        [Quarterly] => 149.73
        [Monthly] => 50.85
    )    
)
[2] => Array (
    [product_id] => 3
    [rate] => 30.52
    [premium] => Array (
        [Annual] => 497.8
        [Monthly] => 47.29
    )
)
)

1 个答案:

答案 0 :(得分:1)

我认为你想使用usort函数,比如

function compare($a, $b){
  $p1 = $a["premium"];
  $p2 = $b["premium"];
  if($p1["Monthly"] == $p2["Monthly"]){
     // compare by quarterly
     ...
  }else{
     if($p1["Monthly"] < $p2["Monthly"])then return -1;
     else return 1;
  }
}

usort($prices, "compare");

其中$prices是您的数组。比较功能没有完全实现,只是为了表明这个想法。此外,由于看起来价格数组中可能缺少项目(即最后一个错过季度和半年度),您必须先检查(比较前)项目是否存在并采取适当的措施以防丢失一个或两个