只需使用
array_multisort即可。
foreach ($data as $key => $row) {
$attack[$key] = $row['attack'];
}
array_multisort($attack, SORT_DESC, $data);
更新:
当数组键是字符串时,
array_multisort
函数可以正常工作,但是在数字数组键的情况下,
array_multisort
会破坏数组的第一层键。
第一层数组键将被保留。
<?php
$data = array(
'a' => array(
'attack' => '45', 'defence' => '15', 'total' => '10'
),
'b' => array(
'attack' => '25', 'defence' => '15', 'total' => '10'
),
'c' => array(
'attack' => '35', 'defence' => '15', 'total' => '10'
)
);
print_r($data);
foreach ($data as $key => $row) {
$key = (string)$key;
$attack[$key] = $row['attack'];
}
print_r($attack);
array_multisort($attack, SORT_DESC, $data);
print_r($data);
?>
输出:
Array
(
[a] => Array
(
[attack] => 45
[defence] => 15
[total] => 10
)
[b] => Array
(
[attack] => 25
[defence] => 15
[total] => 10
)
[c] => Array
(
[attack] => 35
[defence] => 15
[total] => 10
)
)
Array
(
[a] => 45
[b] => 25
[c] => 35
)
Array
(
[a] => Array
(
[attack] => 45
[defence] => 15
[total] => 10
)
[c] => Array
(
[attack] => 35
[defence] => 15
[total] => 10
)
[b] => Array
(
[attack] => 25
[defence] => 15
[total] => 10
)
)
一级数组键不会被保留
<?php
$data = array(
'15' => array(
'attack' => '45', 'defence' => '15', 'total' => '10'
),
'13' => array(
'attack' => '25', 'defence' => '15', 'total' => '10'
),
'18' => array(
'attack' => '35', 'defence' => '15', 'total' => '10'
)
);
print_r($data);
foreach ($data as $key => $row) {
$key = (string)$key;
$attack[$key] = $row['attack'];
}
print_r($attack);
array_multisort($attack, SORT_DESC, $data);
print_r($data);
?>
输出:
Array
(
[15] => Array
(
[attack] => 45
[defence] => 15
[total] => 10
)
[13] => Array
(
[attack] => 25
[defence] => 15
[total] => 10
)
[18] => Array
(
[attack] => 35
[defence] => 15
[total] => 10
)
)
Array
(
[15] => 45
[13] => 25
[18] => 35
)
Array
(
[0] => Array
(
[attack] => 45
[defence] => 15
[total] => 10
)
[1] => Array
(
[attack] => 35
[defence] => 15
[total] => 10
)
[2] => Array
(
[attack] => 25
[defence] => 15
[total] => 10
)
)
https://www.php.net/manual/en/language.types.array.php
关键字可以是整数或字符串。值可以是任何类型。
此外,将发生以下关键字转换:
包含有效十进制整数的字符串(除非数字前面有+号)将被转换为整数类型。例如,关键字“8”实际上将存储在8下。另一方面,“08”不会被转换,因为它不是有效的十进制整数。
浮点数也会被转换为整数,这意味着小数部分将被截断。例如,关键字8.7实际上将存储在8下。
布尔值也会被转换为整数,即true关键字实际上将存储在1下,false关键字存储在0下。
null将被转换为空字符串,即null关键字实际上将存储在""下。
数组和对象不能用作关键字。这样做将导致警告:非法偏移类型。
$a['attack'] - $b['attack'];
就足够了。 - salathe