我是法比奥·马西诺,我是意大利人,所以我的英语可能并不完美。
我想实现一种分类足球小组的方法
例如,如果我有这个多维数组:
$group=array(
array("Juve", 15, 45), // the values are name, points and goals scored
array("Inter", 21, 40),
array("Milan", 15, 50)
);
我想得到这样的结果:
$group=array(
array("Inter", 21, 40),
array("Milan", 15, 50),
array("Juve", 15, 45)
);
提前感谢您和最好的问候。
答案 0 :(得分:2)
点数是每个子阵列的第二个元素,对吗?如果是这样,那就这样做
function CustomSort($a, $b)
{
return $a[1] < $b[1] ? -1 : 1;
}
usort($group, 'CustomSort');
如果您想关注名称和目标等其他条件,则只需将数字数组索引更改为代表每个子数组中每个条件的数字。例如,排序名称只是
function NameSort($a, $b)
{
return $a[0] > $b[0] ? -1 : 1;
}
答案 1 :(得分:1)
$group = array(
array("Juve", 15, 45), // the values are name, points and goals scored
array("Inter", 21, 40),
array("Milan", 15, 50)
);
usort(
$group,
function($a, $b) {
if ($a[1] == $b[1]) {
if ($a[2] == $b[2]) {
return ($a[0] < $b[0]) ? -1 : 1; // by team name (ascending)
}
return ($a[2] < $b[2]) ? 1 : -1; // by goals scored (descending)
}
return ($a[1] < $b[1]) ? 1 : -1; // by points (descending)
}
);
var_dump($group);
答案 2 :(得分:1)
$group=array(
array("Juve", 15, 45), // the values are name, points and goals scored
array("Inter", 21, 40),
array("Milan", 15, 50)
);
// Obtain a list of columns
foreach ($group as $key => $row) {
$team[$key] = $row[0];
$point[$key] = $row[1];
$goal[$key] = $row[2];
}
array_multisort($point, SORT_DESC, $goal, SORT_DESC, $group);
echo "<pre>";
print_r($group);
答案 3 :(得分:0)
排序功能:
使用我的自定义功能来实现正在运行的解决方案
function multisort (&$array, $key) {
$valsort=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
$valsort[$ii]=$va[$key];
}
asort($valsort);
foreach ($valsort as $ii => $va) {
$ret[$ii]=$array[$ii];
}
$array=$ret;
}
multisort($multiarr,"order");
希望这对您有所帮助。