下面我将详细讲解“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种方法和自定义函数分享 - Python技术站