4.18 用回调函数处理数组
PHP支持回调函数操作给定数组的元素上,这也是PHP数组函数的强大功能之一。函数array_map()就可以完成这样的工作,它将回调函数作用到给定数组的元素上,其语法如下所示。
array array_map(callback_func,array$arr1[,array……])
函数array_map()返回一个数组,该数组包含了参数$arr1中的所有元素经过函数callback_func()处理之后的元素。callback接受参数的数目应该和传递给array_map()函数的数组数目一致。代码4-29演示了该函数的用法。
代码4-29 使用回调函数处理数组元素4-29.php
01 <?php
02 function cube($n)//定义函数cube()
03 {
04 $cb=$n*$n*$n;
05 return$cb;
06 }
07
08 $a=array(1,2,3,4,5);
09 $b=array_map("cube",$a);//通过回调函数处理数组$a
10
11 echo'计算原数组各元素的立方,结果如下:';
12 echo'<br/>';
13 echo'<pre>';
14
15 print_r($b);
16 ?>
【代码解析】这段代码第2~6行首先定义了一个函数cube(),其功能是计算某个数字的立方值。然后在代码第9行,程序调用函数array_map(),将函数cube()作用于数组$a的每一个元素,也就是为其每个元素做立方值的计算,最后将函数array_map()的返回值数组输出到页面。4-29.php的执行结果如图4-29所示。