我有一个数组,其中Key是销售人员。键的值是一个数组,有2个值:百分比值和总值。
简而言之,我试图将最高百分比值排在最前面。
$sales = array(
"Johnny Smith" => array(75.25,45),
"Ash Han" => array(55.67, 99),
"Janice K." => array(90.00, 40)
);
我已经尝试了一些排列或数组排序功能,并且没有一个足够好甚至可以显示,因为它们没有示例,其中数组值是要排序的数组。
最终结果是我想显示哪个销售人员的百分比最高百分比。在上面的例子中,“Janice K.”有90%的百分比,她有40个销售。简而言之,她已经完成了40次销售,其中90%已经清算。
是否可以根据$ key的$值进行排序,如果它是一个数组?
答案 0 :(得分:3)
uasort()
使用用户定义的函数对数组进行排序,并维护索引关联。这是使用匿名函数的实现示例。
uasort($sales, function($a, $b) {
return $b[0] - $a[0];
});
print_r($sales);
以上将产生
Array (
[Janice K.] => Array (
[0] => 90
[1] => 40
)
[Johnny Smith] => Array (
[0] => 75.25
[1] => 45
)
[Ash Han] => Array (
[0] => 55.67
[1] => 99
)
)
答案 1 :(得分:1)
使用uasort。
$sales = array(
"Johnny Smith" => array(75.25,45),
"Ash Han" => array(55.67, 99),
"Janice K." => array(55.00, 40)
);
//comparison function.
function cmp($a,$b){
//if the percentages (key 0) are equal...
if($b[0]==$a[0]){
//check sales count (key 1)
if($b[1]==$a[1]){
//if both are equal, return 0
return 0;
}
//return -1 or 1 based on which sales are higher
return $b[1]<$a[1]?-1:1;
}
//return -1 or 1 based on which percentage is higher
return $b[0]<$a[0]?-1:1;
}
//run sort on sales using custom compare function.
uasort($sales, 'cmp');
//print the values.
echo '<pre>';
print_r($sales);
编辑:添加评论。 edit2:按销售额添加排序(desc)是百分比相等。