php基础篇-二维数组排序 array_multisort
对2维数组或者多维数组排序是常见的问题,在php中我们有个专门的多维数组排序函数,下面简单介绍下:
array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数。
| array1 | 必需。规定输入的数组。 |
| sorting order | 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。 |
| sorting type | 可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。 |
| array2 | 可选。规定输入的数组。 |
| array3 | 可选。规定输入的数组。 |
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
- SORT_ASC - 默认,按升序排列。(A-Z)
- SORT_DESC - 按降序排列。(Z-A)
随后可以指定排序的类型:
- SORT_REGULAR - 默认。将每一项按常规顺序排列。
- SORT_NUMERIC - 将每一项按数字顺序排列。
- SORT_STRING - 将每一项按字母顺序排列
<?php
function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){
if(is_array($arrays)){
foreach ($arrays as $array){
if(is_array($array)){
$key_arrays[] = $array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
return $arrays;
}
$person = array(
array("id"=>1,"name"=>"fj","weight"=>100,"height"=>180),
array("id"=>2,"name"=>"tom","weight"=>53,"height"=>150),
array("id"=>3,"name"=>"jerry","weight"=>120,"height"=>156),
array("id"=>4,"name"=>"bill","weight"=>110,"height"=>190),
array("id"=>5,"name"=>"linken","weight"=>80,"height"=>200),
array("id"=>6,"name"=>"madana","weight"=>95,"height"=>110),
array("id"=>7,"name"=>"jordan","weight"=>70,"height"=>170)
);
var_dump($person);
$person = my_sort($person,"name",SORT_ASC,SORT_STRING);
var_dump($person);
$person = my_sort($person,"weight");
var_dump($person);
?>结果如下:
array (size=7)
0 =>
array (size=4)
"id" => 1
"name" => "fj" (length=2)
"weight" => 100
"height" => 180
1 =>
array (size=4)
"id" => 2
"name" => "tom" (length=3)
"weight" => 53
"height" => 150
2 =>
array (size=4)
"id" => 3
"name" => "jerry" (length=5)
"weight" => 120
"height" => 156
3 =>
array (size=4)
"id" => 4
"name" => "bill" (length=4)
"weight" => 110
"height" => 190
4 =>
array (size=4)
"id" => 5
"name" => "linken" (length=6)
"weight" => 80
"height" => 200
5 =>
array (size=4)
"id" => 6
"name" => "madana" (length=6)
"weight" => 95
"height" => 110
6 =>
array (size=4)
"id" => 7
"name" => "jordan" (length=6)
"weight" => 70
"height" => 170
array (size=7)
0 =>
array (size=4)
"id" => 4
"name" => "bill" (length=4)
"weight" => 110
"height" => 190
1 =>
array (size=4)
"id" => 1
"name" => "fj" (length=2)
"weight" => 100
"height" => 180
2 =>
array (size=4)
"id" => 3
"name" => "jerry" (length=5)
"weight" => 120
"height" => 156
3 =>
array (size=4)
"id" => 7
"name" => "jordan" (length=6)
"weight" => 70
"height" => 170
4 =>
array (size=4)
"id" => 5
"name" => "linken" (length=6)
"weight" => 80
"height" => 200
5 =>
array (size=4)
"id" => 6
"name" => "madana" (length=6)
"weight" => 95
"height" => 110
6 =>
array (size=4)
"id" => 2
"name" => "tom" (length=3)
"weight" => 53
"height" => 150
array (size=7)
0 =>
array (size=4)
"id" => 2
"name" => "tom" (length=3)
"weight" => 53
"height" => 150
1 =>
array (size=4)
"id" => 7
"name" => "jordan" (length=6)
"weight" => 70
"height" => 170
2 =>
array (size=4)
"id" => 5
"name" => "linken" (length=6)
"weight" => 80
"height" => 200
3 =>
array (size=4)
"id" => 6
"name" => "madana" (length=6)
"weight" => 95
"height" => 110
4 =>
array (size=4)
"id" => 1
"name" => "fj" (length=2)
"weight" => 100
"height" => 180
5 =>
array (size=4)
"id" => 4
"name" => "bill" (length=4)
"weight" => 110
"height" => 190
6 =>
array (size=4)
"id" => 3
"name" => "jerry" (length=5)
"weight" => 120
"height" => 156
这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序了,当然,这里的排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: php单引号中字符串的转义("")
