PHP usort两个数组:第一个按值排序,第二个按键排序,基于第一个数组顺序

PHP usort两个数组:第一个按值排序,第二个按键排序,基于第一个数组顺序,php,usort,Php,Usort,我有这样一个多阵列: Array ( ['player1'] => Array ( ['a'] => 112 ['b'] => 234 ['c'] => 511 ['d'] => 323 ['e'] => 456 ['f'] => 324 ) ['player2'] => Array ( ['a'] => 5

我有这样一个多阵列:

Array
(
    ['player1'] => Array (
        ['a'] => 112
        ['b'] => 234
        ['c'] => 511
        ['d'] => 323
        ['e'] => 456
        ['f'] => 324
    )
    ['player2'] => Array (
        ['a'] => 545
        ['b'] => 434
        ['c'] => 158
        ['d'] => 053
        ['e'] => 982
        ['f'] => 111        
    )
)
我需要按player1的值对其排序,然后按相同的键顺序对player2排序

我需要这个:

Array
(
    ['player1'] => Array (
        ['a'] => 112
        ['b'] => 234        
        ['d'] => 323
        ['f'] => 324
        ['e'] => 456
        ['c'] => 511        
    )
    ['player2'] => Array (
        ['a'] => 545
        ['b'] => 434
        ['d'] => 053
        ['f'] => 111        
        ['e'] => 982
        ['c'] => 158

    )
)
您可以看到player1是如何按其值排序的,然后player2是如何按player1键顺序排序的

我有这个代码来订购player1

我松开了player1键,因此无法循环订购Player2作为player1键


有什么想法吗?

您需要按一个函数对其进行排序吗?如果没有,这将起作用

$a = Array ('player1' => Array (
                         'a' => 112,
                         'b' => 234,
                         'c' => 511,
                         'd' => 323,
                         'e' => 456,
                         'f' => 324
                        ), 
        'player2' => Array (
                        'a' => 545,
                        'b' => 434,
                        'c' => 158,
                        'd' => 053,
                        'e' => 982,
                        'f' => 111       
                        )   
);

asort($a['player1']);

foreach ($a['player1'] as $value) {
    echo $value."<br>";
}

echo "<hr>";

foreach ($a['player2'] as $value) {
    echo $value."<br>";
}

根据您的需要尝试以下方法:

$my_array= array
(
    'player1' => array (
        'a' => 112,
        'b' => 234,
        'c' => 511,
        'd' => 323,
        'e' => 456,
        'f' => 324,
    ),
    'player2' => array (
        'a' => 545,
        'b' => 434,
        'c' => 158,
        'd' => 53,
        'e' => 982,
        'f' => 111,        
    )
);

asort($my_array['player1']);

$tmp_arr = $my_array['player2'];

$my_array['player2']=array();

foreach ($my_array['player1'] as $key => $value) {
    $my_array['player2'][$key]=$tmp_arr[$key];
}

var_dump($my_array);
-显示usort不维护密钥,您需要uasort
$a = Array ('player1' => Array (
                         'a' => 112,
                         'b' => 234,
                         'c' => 511,
                         'd' => 323,
                         'e' => 456,
                         'f' => 324
                        ), 
        'player2' => Array (
                        'a' => 545,
                        'b' => 434,
                        'c' => 158,
                        'd' => 053,
                        'e' => 982,
                        'f' => 111       
                        )   
);

asort($a['player1']);

foreach ($a['player1'] as $value) {
    echo $value."<br>";
}

echo "<hr>";

foreach ($a['player2'] as $value) {
    echo $value."<br>";
}
$my_array= array
(
    'player1' => array (
        'a' => 112,
        'b' => 234,
        'c' => 511,
        'd' => 323,
        'e' => 456,
        'f' => 324,
    ),
    'player2' => array (
        'a' => 545,
        'b' => 434,
        'c' => 158,
        'd' => 53,
        'e' => 982,
        'f' => 111,        
    )
);

asort($my_array['player1']);

$tmp_arr = $my_array['player2'];

$my_array['player2']=array();

foreach ($my_array['player1'] as $key => $value) {
    $my_array['player2'][$key]=$tmp_arr[$key];
}

var_dump($my_array);