我有一个如下数组,我想按键“attack”的值对该数组进行排序。数组的第一个键(15, 13, 18)
是数据库中某些特定项目的 ID,因此我不希望在数组排序时更改这些键。任何帮助将不胜感激。
这是数组:
$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'
)
);
Use uasort() http://www.php.net/manual/en/function.uasort.php:
该函数使用用户定义的比较函数对数组进行排序,以便数组索引保持与其关联的数组元素的相关性。
这主要在对实际元素顺序很重要的关联数组进行排序时使用。
Example:
function cmp($a, $b) {
if ($a['attack'] == $b['attack']) {
return 0;
}
return ($a['attack'] < $b['attack']) ? -1 : 1;
}
uasort($data, 'cmp');
如果值始终是字符串,您还可以使用strcmp() http://php.net/manual/en/function.strcmp.php in the cmp()
功能:
function cmp($a, $b) {
return strcmp($a['attack'], $b['attack']);
}
Update:
要按降序排序,您只需更改返回值:
return ($a['attack'] < $b['attack']) ? 1 : -1;
// ^----^
或接受@salathe 的提案:
return $b['attack'] - $a['attack'];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)