首页 > PHP教程 > php开发知识文章

PHP 多维数组按照某个键值排序 -- array_multisort,自定义排序函数

本文主要介绍了PHP 多维数组按照某个键值排序 -- array_multisort,自定义排序函数。分享给大家供大家参考,欢迎大家的学习。

对多维数组按照某个键值进行排序,有两种方法(array_multisortarray_sort)

第一种:

array_multisort()函数对多个数组或多维数组进行排序。

//对数组按照nu键值大小降序进行排序;
$re = array(
array('a' => array('id' => '1546', 'type' => '一级', 'nu' => '2')),
array('a' => array('id' => '1546', 'type' => '二级', 'nu' => '1')),
array('1' => array('id' => '1546', 'type' => '三级', 'nu' => '2'))
);
//提取列数组
foreach ($re as $key => $val) {
$tmp[$key] = $val['nu'];
}
//对数组进行降序排列;SORT_DESC按降序排列
array_multisort($tmp, SORT_DESC, $re);

第二种:

自定义方法array_sort()进行排序

//指定数组以$keys键值排序
function array_sort($array, $keys, $type = 'asc')
{
//$array为要排序的数组,$keys为要用来排序的键名,$type默认为升序排序
$keysvalue = $new_array = array();
foreach ($array as $k => $v) {
$keysvalue[$k] = $v[$keys];
}
if ($type == 'asc') {
asort($keysvalue);
} else {
arsort($keysvalue);
}
reset($keysvalue);
foreach ($keysvalue as $k => $v) {
$new_array[$k] = $array[$k];
}
return $new_array;
}
//此处对数组进行降序排列
$re = array_sort($re, 'nu', 'desc');

图一:

图二:

温馨提醒:由上图可知第一种方法有个问题,如果你的数组如果是字符串键名将被保留,但是数字键将被重新索引,从0开始,并以1递增。

所以当数组排序之后并且需要保留之前的所有键名的话,那就推荐使用第二种方法。

以上就是本文PHP 多维数组按照某个键值排序 -- array_multisort,自定义排序函数的全部内容,希望本文所述对大家PHP程序设计有所帮助。

关闭
感谢您的支持,我会继续努力!
扫码打赏,建议金额1-10元


提醒:打赏金额将直接进入对方账号,无法退款,请您谨慎操作。