函数的回调是PHP中的一种特殊机制,这种机制允许在函数的参数列表中,传入用户自定义的函数地址作为参数处理或完成一定的操作。使用回调函数可以很容易地显示一些所需的功能。以下将介绍主要的几个使用回调函数处理数组的函数。
①函数array_filter()
array_filter函数用回调函数过滤数组中的元素,返回按用户自定义函数过滤后的新数组。该函数有两个参数,其函数的原型如下:
array array_filter(array input [,callback callback])
该函数的第一个参数是必选项,要求输入一个被过滤的数组。第二个参数是可选项,将用户自定义的函数名以字符串形式传入。如果自定义过滤函数返回true,则被操作的数组的当前值就被包含在返回的数组中,并将结果组成一个新的数组。如果原数组是一个关联数组,则键名保持不变。函数array_filter()使用的代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
在上面的代码中,array_filter()函数一次将 $array数组中的每个值传递到myFun()函数中,如果myFun()函数返回TRUE,则$array数组的当前值会被包含在返回的结果数组中,并将结果组成一个新的数组返回。
②函数array_walk()
array_walk()函数对数组中的每个元素应用回调函数处理。如果成功则返回TRUE,否则返回FALSE。其函数的原型如下:
bool array_walk(array $array,callback funcname[,mixed userdata])
该函数的第一个参数是必选项,要求输入一个被指定的回调函数处理的数组。第二个参数也是必选项传入用户定义的回调函数,用于操作传入第一个参数的数组。array_walk()函数一次将第一个参数的数组中的每个值传递到这个自定义的函数中。自定义的这个回调函数中应该接收两个参数,依次传入进来的元素的值作为第一个参数,键名作为第二个参数。在array_walk()函数中提供可选的第三个参数,也将被作为回调函数的第三个参数接收。
如果自定义的回调函数需要的参数比给出的多,则每次array_walk()调用回调函数时都会产生一个E_WARNING级的错误。这些警告可以通过在array_walk()调用前加上PHP的错误操作符@来抑制,或者用error_reporting()。
如果回调函数需要直接作用于数组中的值,可以将回调函数第一个参数指定为引用:&$value。函数array_walk()使用的代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
③函数array_map()
与上一个array_walk()函数相比,array_map()函数将更加灵活,并且可以处理多个数组。将回调函数作用到给定数组的元素上,返回用户自定义函数作用后的数组。array_map()是任意参数列表函数,回调函数接收的参数数目应该和传递给array_map()函数的数组数目一直。其函数原型如下:
array array_map(callback callback ,array arr1[,array...])
该函数中第一个参数是必选项,是用户自定义回调函数的名称,或者是null。第二个参数也是必选项,输入要处理的数组。也可以接着输入多个数组作为可选参数。函数array_map()使用的代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
|
通常array_map()函数使用了两个或更多数组时,它们的长度应该相同,因为回调函数时平行作用于相应的单元上的。如果数组的长度不同,则最短的一个将被用空的单元扩充。
>> 本文固定链接: http://php.ncong.com/php_course/arry_function/array_huidiao.html
>> 转载请注明: 恩聪php 2014年04月13日 于 恩聪PHP学习教程 发表
使用回调函数处理数组的函数