我有脚本需要找到当月的明星表演者。
这是样本数据
$data = array (
[0] = array(
"tasks_done" => 5,
"rating" => 5),
[1] = array(
"tasks_done" => 4,
"rating" => 5),
[2] = array(
"tasks_done" => 3,
"rating" => 5),
[3] = array(
"tasks_done" => 5,
"rating" => 5)
);
所以问题是找到完成最大任务的人和最大评级数。这可能是使用简单的PHP代码的任何算法。
引用示例以查找数组中的最大数字:
find max() of specific multidimensional array value in php
但似乎没有任何效果。 任何帮助表示赞赏。
答案 0 :(得分:0)
我按第一和第二个任务评分排序。
请检查以下代码,
$data = array();
$data[0]=array("tasks_done" => 5,"rating" => 5);
$data[1]=array("tasks_done" => 4,"rating" => 5);
$data[2]=array("tasks_done" => 3,"rating" => 3);
$data[3]=array("tasks_done" => 5,"rating" => 6);
$data[4]=array("tasks_done" => 6,"rating" => 2);
$data[5]=array("tasks_done" => 3,"rating" => 6);
$temp_array = array();
$output = array();
foreach($data as $k=>$values){
$temp_array['tasks_done'][$values['tasks_done']][$k]=$values['tasks_done'];
$temp_array['rating'][$values['rating']][$k]=$values['rating'];
}
echo "<pre>";
print_r($data);
krsort($temp_array['tasks_done']);
krsort($temp_array['rating']);
foreach($temp_array['rating'] as $k=>$v){
$check = checkUpper($v,$temp_array['tasks_done']);
foreach($v as $k1=>$v1){
$output[]=array(
"tasks_done"=>$check[$k1],
"rating"=>$v1
);
}
}
function checkUpper($array_check,$array){
$tmp = array();
foreach($array as $keys=>$values){
foreach($values as $key=>$value){
if(array_key_exists($key,$array_check)){
$tmp[$key]=$value;
}
}
}
arsort($tmp);
return $tmp;
}
输出,
Array
(
[0] => Array
(
[tasks_done] => 5
[rating] => 6
)
[1] => Array
(
[tasks_done] => 3
[rating] => 6
)
[2] => Array
(
[tasks_done] => 5
[rating] => 5
)
[3] => Array
(
[tasks_done] => 4
[rating] => 5
)
[4] => Array
(
[tasks_done] => 3
[rating] => 3
)
[5] => Array
(
[tasks_done] => 6
[rating] => 2
)
)
答案 1 :(得分:0)
我使用mysql和order by参数解决了它。谢谢大家的帮助。