PHP对数组进行排序
作者:admin 日期:2015-08-12
在用PHP进行WEB应用开发中我们经常需要对数组进行排序,强大的PHP也内置了很多方便我们排序的函数。让我们来看一下。
对值数组进行排序sort/rsort
这两个函数基本上是一样的,只是一个是正序,一个是反序。下面其它的也是成对的,就不再说明了。
这组函数只对数组的值进行排序,所有的KEY都会被丢弃掉。所以这组函数适合对值数组进行排序。
关于sort_flags这个参数,这里说明一下。下面如果出现sort_flag也是一样的用法。
- SORT_REGULAR - 正常比较单元(不改变类型)
- SORT_NUMERIC - 单元被作为数字来比较
- SORT_STRING - 单元被作为字符串来比较
- SORT_LOCALE_STRING - 根据当前的 locale 设置来把单元当作字符串比较。PHP 4.4.0 和 5.0.2 新加
下面给出例子
$fruits = array("lemon", "orange", "banana", "apple"); sort($fruits); foreach ($fruits as $key => $val) { echo "fruits[".$key."] = " . $val . "\n"; }
输出
fruits[0] = apple fruits[1] = banana fruits[2] = lemon fruits[3] = orange
对关联数组的值进行排序asort/arsort
这组函数和上面的一组函相似,但他们适合对关联数组进行排序,也就是说排序之后原来的键和值还是会保持原来的关联性。
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); asort($fruits); foreach ($fruits as $key => $val) { echo "$key = $val\n"; }
输出
c = apple b = banana d = lemon a = orange
对关联数组的key进行排序ksort/krsort
这组数组会对关联数组的key进行排序,排好之后key和value还是保持原来的关联。
$fruits = array("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple"); ksort($fruits); foreach ($fruits as $key => $val) { echo "$key = $val\n"; }
输出
a = orange b = banana c = apple d = lemon
自然排序
关于自然排序的概念,可以看这 Natural order String Comparison
这个函数和asort一样会保持数据的key和value的关联性,但他的排序方法是自然排序,就是和人通常对字母数字进行排序时的方法一样。下面给出一个例子,比较一下大家就明白了。
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png"); sort($array1); echo "Standard sorting\n"; print_r($array1); natsort($array2); echo "\nNatural order sorting\n"; print_r($array2);
输出
Standard sorting Array ( [0] => img1.png [1] => img10.png [2] => img12.png [3] => img2.png ) Natural order sorting Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
评论: 0 | 查看次数: 6850