一、sort函数简介
sort()函数是php中的一种排序函数,主要用于对数组进行排序,可以按照升序或者降序的方式进行排序,具体的排序规则可以自行定义。sort()函数适用于索引数组和关联数组。
二、sort函数的基本用法
sort函数的基本用法非常简单,只需要传入要排序的数组作为参数即可。需要注意的是,sort函数会直接改变原有的数组,排序后的结果会直接作用于原始数组。
$arr = array(3,2,1,5,4); sort($arr); print_r($arr); //输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
三、sort函数的参数
sort函数可以接受的第二个参数是sort_flags,即排序参数。如果不传入sort_flags参数,则默认按照升序的方式进行排序。
如果想要按照降序的方式进行排序,则需要加入SORT_DESC参数:
$arr = array(3,2,1,5,4); sort($arr,SORT_DESC); print_r($arr); //输出结果:Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )
sort_flags参数还可以使用SORT_STRING、SORT_NUMERIC、SORT_LOCALE_STRING、SORT_NATURAL和SORT_FLAG_CASE等参数来指定相应的排序方式。
四、自定义排序规则
在某些情况下,我们需要根据数组元素的某一属性进行排序,此时可以自定义排序规则。sort函数的第二个参数也可以传入一个回调函数,该回调函数可以自定义排序规则。
例如,我们可以自定义一个函数用于将数组元素按照字符串长度进行排序:
$arr = array('aaa','b','cc','dddd'); function cmp($a,$b){ $len1 = strlen($a); $len2 = strlen($b); if($len1 == $len2){ return 0; }else{ return $len1 > $len2 ? 1 : -1; } } usort($arr,"cmp"); print_r($arr); //输出结果:Array ( [0] => b [1] => aaa [2] => cc [3] => dddd )
五、多维数组的排序
在处理多维数组时,需要使用到usort()函数,该函数的用法和sort()函数类似,只不过usort()函数允许我们自定义排序规则。
例如,我们可以按照多维数组中某一键的属性进行排序:
$arr = array( array("name"=>"张三","age"=>20), array("name"=>"李四","age"=>15), array("name"=>"王五","age"=>30) ); function cmp($a,$b){ if($a["age"] == $b["age"]){ return 0; }else{ return $a["age"] > $b["age"] ? 1 : -1; } } usort($arr,"cmp"); print_r($arr); //输出结果:Array ( [0] => Array ( [name] => 李四 [age] => 15 ) [1] => Array ( [name] => 张三 [age] => 20 ) [2] => Array ( [name] => 王五 [age] => 30 ) )
六、总结
sort函数是php中一个非常基础的排序函数,它可以对索引数组和关联数组进行排序,读者在使用时需要注意参数的使用,同时可以自定义排序规则以满足更多的需求。