现在的位置: 首页php-基础语法>正文
PHP数组的排序  
发表于758 天前 php-基础语法 评论数 2

PHP中对数组的排序分为哪几种呢?

我认为不外乎就是:递增、递减以及对多维数组的排序。

PHP的递增排序

PHP中可以实现递增的函数是:sort函数。语法如下:

Void sort(array array [,int sort_flags])

Array肯定是数组了,sort_flags是什么呢?是排序行为:

  • SORT_REGULAR:正常比较单元
  • SORT_NUMERIC:单元被作为数字比较
  • SORT_STRING:单元被作为字符串比较

例如:

<pre name=”code”>
<?php
$php = array(5=>’php’,2=>’wordpress’,3=>’seo’);
foreach($php as $key=>$keyword)
echo “Key:$key;Keyword:$keyword”.” “;
echo “<br />—排序后—<br />”;
sort($php); //内部没有”"
foreach($php as $key=>$keyword)
echo “Key:$key;Keyword:$keyword”.” “;
?>

</pre>
结果是:

Key:5;Keyword:php Key:2;Keyword:wordpress Key:3;Keyword:seo
—排序后—
Key:0;Keyword:php Key:1;Keyword:seo Key:2;Keyword:wordpress注意到了吗?

键值被重新分配了。也许你会说,它并不是全部排序了。但是:事实上全部排序了,只是“p”比“s”的位置更靠前

PHP的递减排序

PHP中可以实现递减的函数是:rsort函数。语法如下:

Void rsort(array array [,int sort_flags])

语法同sort相同。

例如:

  1. <?php
  2. $php = array(5=>’php’,2=>’wordpress’,3=>’seo’);
  3. foreach($php as $key=>$keyword)
  4. echo “Key:$key;Keyword:$keyword”.” “;
  5. echo “<br />—排序后—<br />”;
  6. rsort($php); //内部没有”"
  7. foreach($php as $key=>$keyword)
  8. echo “Key:$key;Keyword:$keyword”.” “;
  9. ?>

结果:

Key:5;Keyword:php Key:2;Keyword:wordpress Key:3;Keyword:seo
—排序后—
Key:0;Keyword:wordpress Key:1;Keyword:seo Key:2;Keyword:php

PHP中的数组排序

PHP中可以实现多维数组的排序的函数是:array_multisort函数。array_multisort函数既可以一次对多个数组排序也可以以某一维为参照对数组进行排序。

语法如下:

Bool array_multisort(array array [, arg [sort_flags ...[,array ...]])

Arg表示排序顺序标志:

  • SORT_ASC:升序(默认)
  • SORT_DESC:降序

Array和sort_flags的用法如上。

例如:

  1. <?php
  2. $php1 = array(5=>’php’,2=>’wordpress’,3=>’seo’);
  3. $php2 = array(4=>’phpdo’,6=>’phpdo’,1=>’php学习’);
  4. foreach($php1 as $key=>$keyword)
  5. {
  6. echo “Key:$key;Keyword:$keyword”.” “;
  7. }
  8. foreach($php2 as $key=>$keyword)
  9. {
  10. echo “Key:$key;Keyword:$keyword”.” “;
  11. }
  12. echo “<br />—排序后—<br />”;
  13. array_multisort($php1,$php2); //内部没有”"
  14. foreach($php1 as $key=>$keyword)
  15. {
  16. echo “Key:$key;Keyword:$keyword”.” “;
  17. }
  18. foreach($php2 as $key=>$keyword)
  19. {
  20. echo “Key:$key;Keyword:$keyword”.” “;
  21. }
  22. ?>

这是一次对两个数组进行排序,当然,多个也可以。

结果:

Key:5;Keyword:php Key:2;Keyword:wordpress Key:3;Keyword:seo
Key:4;Keyword:phpdo Key:6;Keyword:phpdo Key:1;Keyword:php学习
—排序后—
Key:0;Keyword:php Key:1;Keyword:seo Key:2;Keyword:wordpress
Key:0;Keyword:phpdo Key:1;Keyword:php学习 Key:2;Keyword:phpdo

对多维数组的排序:

  1. <?php
  2. $php = array(“ar1″=>array(5=>’php’,2=>’wordpress’,3=>’seo’),
  3. “ar2″=>array(4=>’phpdo’,6=>’phpdo’,1=>’php学习’));
  4. FOREACH($php as $keyword1)
  5. {
  6. foreach($keyword1 as $keyword2)
  7. {
  8. echo “$keyword2\n”;
  9. }
  10. }
  11. echo “<br />—排序后—<br />”;
  12. array_multisort($php["ar1"],SORT_STRING,SORT_ASC,$php["ar2"],SORT_STRING,SORT_DESC);
  13. FOREACH($php as $keyword1)
  14. {
  15. foreach($keyword1 as $keyword2)
  16. {
  17. echo “$keyword2\n”;
  18. }
  19. }
  20. ?>

结果是:

php wordpress seo phpdo phpdo php学习
—排序后—
php seo wordpress phpdo php学习 phpdo

当然在PHP中给数组排序的方式还有,例如倒序(rsort()函数),随机排序(shuffle()函数)等,如果你的算法很了不起也可以自定义排序的方式。这里就不再说了。

PHP数组的排序:目前有2 条留言

  1. sanshi : 2010年04月24日8:27 下午

    PHP数组很重要

    admin 回复:

    @sanshi, 事实上每个语言的数组都很重要

不想听你唠叨×