零起点php入门第15课-php数组(4)

一鼓作气,陌小雨继续为大家分享零起点php入门第15课,依然是数组元素相关操作。

1、数组排序

™排序在数组中是比较常用的操作。例如可以用来完成根据学生的成绩进行排名等操作。首先我们来使用for循环来对一个数组的元素进行排序。

上述代码运行结果为:

数组排序之前的信息:
Array ( [0] => 35 [1] => 43 [2] => 56 [3] => 2 [4] => 76 [5] => 23 [6] => 47 [7] => 55 [8] => 71 )
数组排序之后的信息:
Array ( [0] => 2 [1] => 23 [2] => 35 [3] => 43 [4] => 47 [5] => 55 [6] => 56 [7] => 71 [8] => 76 )

™从运行结果排序后的数组可以看出,我们完成了对数组的排序。由于排序的语句(代码中5~13行)是相对固定的,因此我们就可以将其封装为函数来使用。

上述代码将™完成排序的代码封装为函数并对多个数组进行排序。运行结果为:

™从运行结果我们可以看到,使用我们的自定义函数很轻松就完成了对三个数组的排序,这也再一次体现了函数的优势。由于排序操作在数组中很常用,因此PHP提供了多个系统排序函数供我们使用,他们主要有sort、rsort和usort。这三个函数的原型如下所示:

™bool sort ( array &$array [, int $sort_flags ] )  //用于对数组正向(从小到大)排序

™bool rsort ( array &$array [, int $sort_flags ] )  //用于对数组逆向(从大到小)排序

™这两个函数的使用方法类似,参数array为要进行排序的数组;参数fort_flags用来改变排序的方式,主要有如下三个选项:

™SORT_REGULAR:正常比较元素(默认方式);

™SORT_NUMERIC:元素被作为数字来比较;

SORT_STRING:元素被作为字符串来比较。

™上述代码运行结果为:

数组排序之前的信息:
Array ( [0] => 2 [1] => 54 [2] => 167 [3] => a [4] => A [5] => 12 )
数组普通排序之后的信息:
Array ( [0] => A [1] => a [2] => 2 [3] => 12 [4] => 54 [5] => 167 )
数组作为数字排序之后的信息:
Array ( [0] => a [1] => A [2] => 2 [3] => 12 [4] => 54 [5] => 167 )
数组作为字符排序之后的信息:
Array ( [0] => 12 [1] => 167 [2] => 2 [3] => 54 [4] => A [5] => a )

注意:在使用sort函数对字符串进行排序时候,会按照字符对应的ASCII值进行排序。对混合类型的数组进行排序的时候可能会产生无法预料的结果。

™sort和rsort函数的使用和理解都比较简单,陌小雨就不再做详细讲解了。

™另一个与排序数组类似的函数是shuffle函数,它用来对数组进行随机排序即将数组元素的顺序打乱,它的原型如下:

™bool shuffle ( array &$array )

™参数array即为需要进行随机排序的数组,它的使用非常简单。

上述代码运行结果为:

排序之前的数组信息:
Array ( [0] => 3 [1] => 23 [2] => A [3] => f [4] => 123 [5] => hello )
排序之后的数组信息:
Array ( [0] => f [1] => A [2] => hello [3] => 23 [4] => 123 [5] => 3 )

™注意:由于这个函数输出结果是随机的,因此每次的输出结果可能会不同。

2、过滤数组元素

™过滤数组中的元素是一个非常有用的操作。例如可以对分数进行过滤,将100以上的分数从数组中删除。还可以将混合类型数组中的字符串元素输出为一个新数组。也可以在数组中搜索指定的值等等的操作。下面我们通过例子来演示使用自定义函数删除数组中的偶数元素。

上述代码运行结果:
数组进行过滤之前的信息:
Array ( [0] => 23 [1] => 14 [2] => 37 [3] => 263 [4] => 244 [5] => 379 [6] => 100 [7] => 153 [8] => 150 )
数组进行过滤之后的信息:
Array ( [0] => 23 [2] => 37 [3] => 263 [5] => 379 [7] => 153 )

™从运行的结果我们可以看出,我们的自定义函数成功过滤了数组中的偶数值。这个自定义的函数会修改原来的数组。下面我们来定义一个返回数组中0~100之间元素的函数,并且返回一个新的数组。

上述代码运行结果:

原来的数组信息:
Array ( [0] => 2 [1] => 34 [2] => 5 [3] => 175 [4] => 168 [5] => 94 [6] => 942 [7] => 105 )
过滤出来的新数组信息:
Array ( [0] => 2 [1] => 34 [2] => 5 [3] => 94 )

™除了我们可以自定义数组来过滤数组元素外,PHP还提供了array_filter函数来通过自定义的回调函数来过滤数组中的元素,它的原型如下:

™array array_filter ( array $input [, callback $callback ] )

™参数input即为要进行过滤的数组;参数callback即为进行过滤的函数,如果回调函数返回TRUE,则input数组的当前值会被包含在返回的结果数组中,数组的键名保留不变。

™注意:在使用array_filter函数过滤数组元素的时候不可增加或者删除数组的元素,否则会得到不可预料的结果。

上述代码运行结果:

过滤前的数组信息:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 123 [4] => 35 [5] => 47 [6] => 58 [7] => 103 [8] => 116 )
过滤掉偶数后的数组信息:
Array ( [0] => 1 [2] => 3 [3] => 123 [4] => 35 [5] => 47 [7] => 103 )
过滤掉奇数后的数组信息:
Array ( [1] => 2 [6] => 58 [8] => 116 )

™当然array_filter函数不只能用来做上面的事情,例如还可以使用该函数将数组中的整数过滤出来。

上述代码运行结果为:

过滤前的数组信息:
Array ( [0] => 1 [1] => 2 [2] => a [3] => 3 [4] => 4 [5] => c [6] => d )
过滤后的数组信息:
Array ( [0] => 1 [1] => 2 [3] => 3 [4] => 4 )

™从运行结果可以看到,使用array_filter函数成功过滤了数组中的非整数的元素。我们还可以过滤掉非字符的元素,这里你可以在下方留言写出,用pre标签包裹。

AD:站点文章对你有帮助,可以选择去百度口碑好评下,还可以点击此处

赞 (0) 口碑
分享到:更多 ()

本文共有2人发表了自己的想法,下一个就是你!

评论 2

表情 签到
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 憧憬Licoy
    小雨写的很全,不错的 :mrgreen:回复
    • 陌小雨
      @憧憬Licoy 如果分享的文章对你有用,诚邀你去百度口碑点个赞哦,也是对小雨的肯定和鼓励!回复

本站能为你提供什么?

从这里开始使用WordPress

快速认识WordPress,熟悉WordPress,掌握WordPress。

选择更好用的模板主题

海量的WordPress主题模板供应下载,搭建网站更加轻松、便捷!

让您的网站更安全可靠

在这里,可以了解更多关于网站安全方面的常识问题,做个攻不可破的webmaster

让您的网站更符合你的需求

学习技术教程,自己也能改网站,学前端,做设计,成为一名WEB开发者