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