PHP中用sort、asort、natsort函数对数组排序
在PHP开发中,我们可以使用sort()、asort()、natsort()函数对数组排序。
PHP中,要按惯例对数组进行排序,使用sort():
$states = array('Delaware', 'Pennsylvania', 'New Jersey');
sort($states);
要以数字为标准排序,把SORT_NUMERIC作为第二个参数传递给sort():
$scores = array(1, 10, 2, 20);
sort($scores, SORT_NUMERIC);
这样会按数字升序,而不是按词典中的顺序对数组进行重排。
sort()函数不会保留元素间的键/值关联,相反,经过排序后所有的索引都会从0开始以升序进行重新排定(此规则有一个例外,就是对于单元素数组,不会将单个元素的索引重置为0。但这个问题在PHP 4.2.3版之后得到了修正)。
要想保留键/值关联,可以使用asort()函数。asort()函数通常用于关联数组,但当索引具有某种特定的含义时也可以使用该函数:
$states = array(1 => 'Delaware', 'Pennsylvania', 'New Jersey');
asort($states);
while (list($rank, $state) = each($states)) {
print "$state was the #$rank state to join the United States\n";
}PHP中我们可以使用natsort()可以对数组按自然的排序算法进行排序。在自然排序的基础之上,即使数组元素中混合了字符串和数字也能得到正确的排序结果:
$tests = array('test1.php', 'test10.php', 'test11.php', 'test2.php');
natsort($tests);
现在,数组中元素的顺序为:'test1.php', 'test2.php', 'test10.php’和’test11.php'。在使用自然排序时,数字10会排序到数字2的后面,而在使用传统的排序算法时,结果则相反。若要进行区分大小写的自然排序,可以使用natcasesort()。
要想相反的算法对数组中的元素排序(或反转排序后的结果),使用rsort()或arsort()(与rsort()相似,只是保留了键/值关系)。没有natrsort()或natcasersort()函数。也可以把SORT_NUMERIC传递给这两个函数。
转载请注明:http://www.itivy.com/php/archive/2012/2/21/php-sort-asort-natsort.html