PHP-排序多维数组
我是法比奥·马西诺,我是意大利人,所以我的英语可能并不完美 我想实现一种分类足球组的方法PHP-排序多维数组,php,arrays,sorting,Php,Arrays,Sorting,我是法比奥·马西诺,我是意大利人,所以我的英语可能并不完美 我想实现一种分类足球组的方法 按点(按数字降序排序) 然后根据得分(按数字降序排列) 然后按名称(按字符串升序排序) 例如,如果我有这个多维数组: $group=array( array("Juve", 15, 45), // the values are name, points and goals scored array("Inter", 21, 40), array("Milan",
- 按点(按数字降序排序)
- 然后根据得分(按数字降序排列)
- 然后按名称(按字符串升序排序)
$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)
);
提前向您表示感谢和问候。分拣功能:
使用我的自定义函数来实现您的解决方案它正在工作
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");
希望这一定会对您有所帮助。排序功能:
$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);
使用我的自定义函数来实现您的解决方案它正在工作
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");
希望这一定会对您有所帮助。$group=array(
$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);
数组(“尤文”,15,45),//值为姓名、得分和进球
数组(“Inter”,21,40),
阵列(“米兰”,15,50)
);
乌斯波特(
$group,
功能($a$b){
如果($a[1]=$b[1]){
如果($a[2]==$b[2]){
返回($a[0]<$b[0])?-1:1;//按团队名称(升序)
}
回报($a[2]<$b[2])?1:-1;//按得分(递减)
}
返回($a[1]<$b[1])?1:-1;//按点(降序)
}
);
var_dump($组);
$group=array(
数组(“尤文”,15,45),//值为姓名、得分和进球
数组(“Inter”,21,40),
阵列(“米兰”,15,50)
);
乌斯波特(
$group,
功能($a$b){
如果($a[1]=$b[1]){
如果($a[2]==$b[2]){
返回($a[0]<$b[0])?-1:1;//按团队名称(升序)
}
回报($a[2]<$b[2])?1:-1;//按得分(递减)
}
返回($a[1]<$b[1])?1:-1;//按点(降序)
}
);
var_dump($组);
点是每个子阵列的第二个元素,对吗?如果是,那么就这样做
function CustomSort($a, $b)
{
return $a[1] < $b[1] ? -1 : 1;
}
usort($group, 'CustomSort');
点是每个子数组的第二个元素,对吗?如果是,那么就这样做
function CustomSort($a, $b)
{
return $a[1] < $b[1] ? -1 : 1;
}
usort($group, 'CustomSort');
$group=array(
数组(“尤文”,15,45),//值为姓名、得分和进球
数组(“Inter”,21,40),
阵列(“米兰”,15,50)
);
//获取列的列表
foreach($key=>$row的组){
$team[$key]=$row[0];
$point[$key]=$row[1];
$goal[$key]=$row[2];
}
数组\u multisort($point,SORT\u DESC,$goal,SORT\u DESC,$group);
回声“;
印刷(集团);
$group=array(
数组(“尤文”,15,45),//值为姓名、得分和进球
数组(“Inter”,21,40),
阵列(“米兰”,15,50)
);
//获取列的列表
foreach($key=>$row的组){
$team[$key]=$row[0];
$point[$key]=$row[1];
$goal[$key]=$row[2];
}
数组\u multisort($point,SORT\u DESC,$goal,SORT\u DESC,$group);
回声“;
印刷(集团);
此问题可能重复的答案至少为千次。此问题可能重复的答案至少为千次。如果您需要任何澄清,请告诉我!如果您需要任何澄清,请让我知道!