php数组是我们学习php知识的一个重点单元,因为,在我们进行php编程时,php数组几乎是无处不在的。在使用php数组时,由于某种需求,我们可能需要对php数组进行重新排序。本章,我们就来了解一下php数组的几个常用排序函数。
1、sort() 与 rsort() :
这个函数的排序是正好相反的。sort函数是把php数组里的单元从低到高进行排序,而rsort函数是从高到低地进行排序。
语法:
sort(array,sorttype)
参数1:数组;
参数2:可选。规定如何排列数组的值。可能的值:
SORT_REGULAR - 默认。以它们原来的类型进行处理。
SORT_NUMERIC - 把值作为数字来处理
SORT_STRING - 把值作为字符串来处理
SORT_LOCALE_STRING - 把值作为字符串来处理,基于本地设置*。
sort在排序过程中,会对数组的每个单元进行比较,当要比较可能包含有数字 2 和 12 的字符串时,从数字角度看,2 要小于 12,但是作为字符串,"12"却要小于"2"。所以,参数2的值关系到php数组的自然排序效果。
sort函数和rsort函数,会在排序过中,为数组中的每个单元重新取个键名,原键名将被删除掉。
案例:
$arr = array(255,'25',78,'13',5,'28',7,56,23);
sort($arr);
print_r($arr);
输出结果:
Array ( [0] => 5 [1] => 7 [2] => 13 [3] => 23 [4] => 25 [5] => 28 [6] => 56 [7] => 78 [8] => 255 )
上例中,sort函数如果添加第2个参数为SORT_STRING,排序就会发生变化:
$arr = array(255,'25',78,'13',5,'28',7,56,23);
sort($arr,SORT_STRING); //以字符串形式排序
print_r($arr);
输出结果:
Array ( [0] => 13 [1] => 23 [2] => 25 [3] => 255 [4] => 28 [5] => 5 [6] => 56 [7] => 7 [8] => 78 )
2、asort() 与 arsort()
asort() 函数,对php数组的各单元进行从低到高排序,并保持各单元的索引关系。
arsort() 函数,对php数组的各单元进行从高到低排序,并保持各单元的索引关系。
也可有第2个参数,同sort函数。
例:
$arr = array(255,'25',78,'13',5,'28',7,56,23);
print_r($arr); //打印原数组
asort($arr,SORT_STRING);
print_r($arr); //打印排序后的数组
输出结果:
Array ( [0] => 255 [1] => 25 [2] => 78 [3] => 13 [4] => 5 [5] => 28 [6] => 7 [7] => 56 [8] => 23 ) 原数组
Array ( [3] => 13 [8] => 23 [1] => 25 [0] => 255 [5] => 28 [4] => 5 [7] => 56 [6] => 7 [2] => 78 ) 排序后的数组
从输出的结果,我们可以看出,排序后的数组,保留了原数组的各单元的键名不变。
3、ksort() 与 krsort()
ksort()函数,对php数组的单元按照键名从低到高进行排序。
krsort()函数,对php数组的单元按照键名从高到低进行排序。
例:
$arr = array(3=>'gao',1=>'bbb',7=>'eee',4=>'ccc');
ksort($arr);
print_r($arr); //打印排序后的数组
输出结果:
Array ( [1] => bbb [3] => gao [4] => ccc [7] => eee )
结果中可以看到,键名已经是按从小到大的排序了。
4、shuffle()
shuffle()函数,用来打乱php数组,让各单元按随机的顺序进行重新排列。
例:
$arr = array(1,2,3,4,5,6,7,8,9);
shuffle($arr);
print_r($arr); //打印排序后的数组
输出结果:
Array ( [0] => 4 [1] => 5 [2] => 1 [3] => 9 [4] => 6 [5] => 7 [6] => 2 [7] => 3 [8] => 8 )
可见数组的排序已被打乱,而且每刷新页面一次,数组将被再次打乱。
5、array_reverse()
array_reverse()函数,是将原php数组中的所有元素的顺序倒过来,创建一个新的数组并返回。
array_reverse()函数可有2个参数,如果第2个参数存在,并被指定为true,则php数组元素的键名保持不变,否则键名将丢失。如;
$arr = array(1,2,3,4,5,6,7,8,9);
$bb = array_reverse($arr);
print_r($bb); //打印排序后的数组
输出结果:
Array ( [0] => 9 [1] => 8 [2] => 7 [3] => 6 [4] => 5 [5] => 4 [6] => 3 [7] => 2 [8] => 1 )
php数组的常用排序函数就介绍到这里吧,虽然很少用到,但是还是有必要掌握一下的。
下载视频,没有几分,发几条消息!