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