5.18 用回调函数处理数组
PHP支持回调函数操作给定数组的元素上,这也是PHP数组函数的强大功能之一。函数array_map()就可以完成这样的工作,它将回调函数作用到给定数组的元素上,其语法如下。
array array_map(callback_func, array $arr1 [, array ...])
函数array_map()返回一个数组,该数组包含了参数$arr1中的所有元素经过函数callback_func()处理之后的元素。callback接受参数的数目应该和传递给array_map()函数的数组数目一致。代码5.29演示了该函数的用法。
代码5-29 使用回调函数处理数组元素5-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 ?>
图5-29 使用回调函数处理数组元素
【代码解析】代码第02~06行首先定义了一个函数cube(),其功能是计算某个数字的立方值。然后在第09行,程序调用函数array_map(),将函数cube()作用于数组$a的每一个元素,也就是为其每个元素做立方值的计算,最后将函数array_map()的返回值数组输出到页面。程序5-29.php的执行结果如图5-29所示。