下面我将详细讲解“PHP二维数组排序的3种方法和自定义函数分享”的完整攻略。
下面我将详细讲解“PHP二维数组排序的3种方法和自定义函数分享”的完整攻略。
一、什么是PHP二维数组
PHP二维数组是指包含多个数组的数组,每个数组都具有相同的键名,但是具有不同的值。
例如:
$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);
上面的例子就是一个PHP二维数组,其中每个数组都包含有"姓名","年龄"和"分数"三个键名。
二、PHP二维数组排序的3种方法
方法一:使用array_multisort()函数进行排序
使用array_multisort()函数可以对PHP二维数组进行排序,可以按照数组中任意一个键名进行排序,如下所示:
$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);
//按照分数进行排序
array_multisort($arr,SORT_DESC,SORT_NUMERIC,array_column($arr,'score'));
print_r($arr);
上述代码中,我们使用了array_multisort()函数对数组进行排序,按照分数进行排序,并使用了print_r()函数输出数组结果。输出结果如下:
Array
(
[0] => Array
(
[name] => Tom
[age] => 18
[score] => 90
)
[1] => Array
(
[name] => Mike
[age] => 20
[score] => 85
)
[2] => Array
(
[name] => Jerry
[age] => 19
[score] => 80
)
)
方法二:使用usort()函数进行排序
使用usort()函数可以对PHP二维数组进行排序,可以自定义比较函数,按照自己的需要进行排序,如下所示:
$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);
//按照年龄进行排序
function cmp($a,$b){
if($a['age']==$b['age']) return 0;
return ($a['age']<$b['age'])?-1:1;
}
usort($arr,"cmp");
print_r($arr);
上述代码中,我们使用了usort()函数对数组进行排序,按照年龄进行排序,并使用了print_r()函数输出数组结果。输出结果如下:
Array
(
[0] => Array
(
[name] => Tom
[age] => 18
[score] => 90
)
[1] => Array
(
[name] => Jerry
[age] => 19
[score] => 80
)
[2] => Array
(
[name] => Mike
[age] => 20
[score] => 85
)
)
方法三:使用ksort()函数进行排序
使用ksort()函数可以对PHP二维数组进行排序,可以按照数组键名进行排序,如下所示:
$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);
//按照姓名进行排序
ksort($arr);
print_r($arr);
上述代码中,我们使用了ksort()函数对数组进行排序,按照姓名进行排序,并使用了print_r()函数输出数组结果。输出结果如下:
Array
(
[0] => Array
(
[name] => Jerry
[age] => 19
[score] => 80
)
[1] => Array
(
[name] => Mike
[age] => 20
[score] => 85
)
[2] => Array
(
[name] => Tom
[age] => 18
[score] => 90
)
)
三、自定义函数分享
下面是一个自定义的排序函数,可以按照任意一个键名进行排序:
$arr=array(
array("name"=>"Tom","age"=>18,"score"=>90),
array("name"=>"Jerry","age"=>19,"score"=>80),
array("name"=>"Mike","age"=>20,"score"=>85),
);
//按照年龄进行排序
function sortArr($arr,$keyname,$sortOrder='SORT_ASC'){
$sort_columns=array();
foreach($arr as $k=>$v){
$sort_columns[$k]=$v[$keyname];
}
array_multisort($sort_columns,$sortOrder,$arr);
return $arr;
}
print_r(sortArr($arr,'age','SORT_DESC'));
上述代码中,我们自定义了一个sortArr()函数,可以传入一个二维数组以及需要排序的键名和排序方式,由于使用了array_multisort()函数,所以可以对数组进行多重排序。
我们对该函数进行了测试,按照年龄进行降序排序,并使用了print_r()函数输出数组结果。输出结果如下:
Array
(
[0] => Array
(
[name] => Mike
[age] => 20
[score] => 85
)
[1] => Array
(
[name] => Jerry
[age] => 19
[score] => 80
)
[2] => Array
(
[name] => Tom
[age] => 18
[score] => 90
)
)
至此,PHP二维数组排序的3种方法和自定义函数分享的攻略已经讲解完毕,希望对你有所帮助。
本文标题为:PHP二维数组排序的3种方法和自定义函数分享


基础教程推荐
- PHP实现RSA加解密算法示例(生成密钥位数为1024位的方法) 2022-10-09
- PHP实现适用于自定义的验证码类 2023-08-10
- PHP读取docx文档内容及对图片进行处理 2022-09-23
- 解决Laravel5.x的php artisan migrate数据库迁移创建操作报错SQLSTATE[42000] 2023-04-07
- PHP多人模块开发原理解析 2022-10-02
- 聊聊PHP中require_once()函数为什么不好用 2022-09-02
- PHP排序算法之冒泡排序(Bubble Sort)实现方法详解 2022-10-15
- Laravel核心解读之异常处理的实践过程 2022-12-29
- PHP后期静态绑定之self::限制实例分析 2022-12-04
- PHP的反射动态获取类方法、属性、参数操作示例 2023-04-01