当前位置:  首页>> 技术小册>> PHP8入门与项目实战(3)

本节将讲解如何对一维和多维数组进行排序操作。

6.6.1 一维数组排序
下面通过实例展示如何对数组进行排序,具体操作步骤如下。
【例6.6】

  1. <?php
  2. $roomtypes = array( '单床房','标准间','三床房','VIP套房');
  3. $prices_per_day = array('单床房'=> 298,'标准间'=> 268,'三床房'=> 198,'VIP套房'=>
  4. 368);
  5. sort($roomtypes);
  6. foreach ($roomtypes as $key => $value){
  7. echo $key.":".$value."<br/>";
  8. }
  9. asort($prices_per_day);
  10. foreach ($prices_per_day as $key => $value){
  11. echo $key.":".$value." 每日。<br/>";
  12. }
  13. ksort($prices_per_day);
  14. foreach ($prices_per_day as $key => $value){
  15. echo $key.":".$value." 每天。<br/>";
  16. }
  17. rsort($roomtypes);
  18. foreach ($roomtypes as $key => $value){
  19. echo $key.":".$value."<br/>";
  20. }
  21. arsort($prices_per_day);
  22. foreach ($prices_per_day as $key => $value){
  23. echo $key.":".$value." 每日。<br/>";
  24. }
  25. krsort($prices_per_day);
  26. foreach ($prices_per_day as $key => $value){
  27. echo $key.":".$value." 每天。<br/>";
  28. }
  29. ?>

运行结果如图6-8所示。

【案例分析】

(1)这段代码用于展示数组排序的功能涉及sort()、asort()、ksort()和rsort()、arsort()、krsort()等函数。其中,sort()是默认排序。asort()根据数组元素值的升序排序。ksort()根据数组元素的键值,也就是关键字的升序排序。

(2)rsort()、arsort()和krsort()等函数则正好与所对应的升序排序相反,都为降序排序。

6.6.2 多维数组排序
对于一维数组,通过sort()等一系列排序函数就可以对它进行排序。而对于多维数组,排序就没有那么简单了。首先需要设定一个排序方法,也就是建立一个排序函数。再通过usort()函数对特定数组采用特定排序方法进行排序。下面的案例介绍多维数组排序,具体步骤如下。
【例6.7】

运行结果如图6-9所示。

【案例分析】

(1)函数compare()定义了排序方法,通过对price_per_day这一数组元素的对比进行排序。然后usort()采用compare方法对$roomtypes这一多维数组进行排序。

(2)上述这个排序的结果是正向排序,那么如何进行反向排序呢?这就需要对排序方法进行调整。其中,recompare()替换上述代码中的compare()的相反判断,同样采用usort()函数输出后,即可得到反向排序,正好与前一段程序的输出顺序相反。修改后的部分代码如下:

  1. function recompare($x, $y){
  2. if ($x['price_per_day'] == $y['price_per_day']){
  3. return 0;
  4. }else if ($x['price_per_day'] > $y['price_per_day']){
  5. return -1;
  6. }else{
  7. return 1;
  8. }
  9. }
  10. usort($roomtypes, 'recompare');

该分类下的相关小册推荐: