做一个勇于分享的php园丁

PHP开发园地

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

Posted by php园丁 @ 2012-2-22 9:38:10 阅读(166) 评论(0)
上一篇:PHP中如何动态改变数组大小
下一篇:PHP删除数组中重复的元素

我也来参与讨论

你还可以输入600/600个字符 发表评论
称呼: (必填) 登录 | 开通博客
邮箱: (选填) 你的邮箱地址不会被公开
网站: (选填)
验证码: (必填)
看不清换一张 看不清楚换一张