Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP按值对多数组排序_Php_Arrays_Sorting_Object - Fatal编程技术网

PHP按值对多数组排序

PHP按值对多数组排序,php,arrays,sorting,object,Php,Arrays,Sorting,Object,我想知道如何在PHP中根据“联盟积分”和“获胜”对其进行排序 您可能希望这样使用: 或使用匿名函数: usort($mydata, function($a, $b){ /* ... */ }); 或者,您可以输入任何接受两个参数并返回负数、零或正数的参数。我通常不想提供解决方案,但您只需要将其移植到另一种语言 基本上,您需要编写一个bubblesort回调函数,它将首先比较两个records wins属性,然后如果它们相等,则返回到league points属性。差不多 $data = [

我想知道如何在PHP中根据“联盟积分”和“获胜”对其进行排序

您可能希望这样使用:

或使用匿名函数:

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);