PHP按值对多数组排序
我想知道如何在PHP中根据“联盟积分”和“获胜”对其进行排序PHP按值对多数组排序,php,arrays,sorting,object,Php,Arrays,Sorting,Object,我想知道如何在PHP中根据“联盟积分”和“获胜”对其进行排序 您可能希望这样使用: 或使用匿名函数: usort($mydata, function($a, $b){ /* ... */ }); 或者,您可以输入任何接受两个参数并返回负数、零或正数的参数。我通常不想提供解决方案,但您只需要将其移植到另一种语言 基本上,您需要编写一个bubblesort回调函数,它将首先比较两个records wins属性,然后如果它们相等,则返回到league points属性。差不多 $data = [
您可能希望这样使用:
或使用匿名函数:
usort($mydata, function($a, $b){ /* ... */ });
或者,您可以输入任何接受两个参数并返回负数、零或正数的参数。我通常不想提供解决方案,但您只需要将其移植到另一种语言
基本上,您需要编写一个bubblesort回调函数,它将首先比较两个records wins属性,然后如果它们相等,则返回到league points属性。差不多
$data = [
[
'wins' => 10,
'leaguePoints' => 10,
],
[
'wins' => 10,
'leaguePoints' => 20,
],
[
'wins' => 20,
'leaguePoints' => 10,
],
[
'wins' => 10,
'leaguePoints' => 10,
],
];
usort($data, function($a, $b)
{
if ($a['wins'] === $b['wins']) {
if ($a['leaguePoints'] === $b['leaguePoints']) {
return 0;
}
return ($a['leaguePoints'] > $b['leaguePoints']) ? -1 : 1;
}
return ($a['wins'] > $b['wins']) ? -1 : 1;
});
print_r($data);
我不确定索引是否正确
foreach($league as $leaguesList){
foreach ($leaguesList as $key => $list){
$leaguePoints = [$key] ["info"]["leaguePoints"];
$wins = [$key] ["info"]["info"]["wins"];
$sort = $leaguePoints *= 100 + $wins;
$sorted[$sort] = $list;
}
}
ksort($sorted);
您在PHP中需要做的,正是您在Java中看到的:您必须定义一个排序比较函数。(参见PHP文档)此函数将返回小于、等于或大于零的值,具体取决于排序引擎提供给它的两个变量之间的顺序。“我不是一个代码编写服务,”但实现应该是明确的。我想知道Java例程中是否有bug。。。我从来没想过它怎么会归零!
usort($mydata, function($a, $b){ /* ... */ });
$data = [
[
'wins' => 10,
'leaguePoints' => 10,
],
[
'wins' => 10,
'leaguePoints' => 20,
],
[
'wins' => 20,
'leaguePoints' => 10,
],
[
'wins' => 10,
'leaguePoints' => 10,
],
];
usort($data, function($a, $b)
{
if ($a['wins'] === $b['wins']) {
if ($a['leaguePoints'] === $b['leaguePoints']) {
return 0;
}
return ($a['leaguePoints'] > $b['leaguePoints']) ? -1 : 1;
}
return ($a['wins'] > $b['wins']) ? -1 : 1;
});
print_r($data);
foreach($league as $leaguesList){
foreach ($leaguesList as $key => $list){
$leaguePoints = [$key] ["info"]["leaguePoints"];
$wins = [$key] ["info"]["info"]["wins"];
$sort = $leaguePoints *= 100 + $wins;
$sorted[$sort] = $list;
}
}
ksort($sorted);