在PHP中,数组函数 array_map () 为数组的每个元素应用回调函数。
函数语法:
array_map ( callable $callback , array $array1 , array $array2,array $array3... ) : array
函数参数说明:
参数 | 描述 |
---|---|
callback | 必需。用户自定义函数的名称,或者是 null。 |
array1 | 必需。规定数组。 |
array2 | 可选。规定数组。 |
array3 | 可选。规定数组。 |
array_map() 函数为数组的每个元素应用回调函数,array_map() 返回一个 array,数组内容为 array1 的元素按索引顺序调用 callback 后的结果(有更多数组时,还会传入 arrays 的元素)。 callback 函数形参的数量必须匹配 array_map() 实参中数组的数量。
传入两个及以上的数组时,它们元素数量将会相同。因为回调函数会并行地处理相互对应的元素。 如果几个数组的元素数量不一致:空元素会扩展短那个数组,直到长度和最长的数组一样。
此函数有个有趣的用法:传入 NULL 作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)
举例1,遍历数组元素,调用回调函数:
<?php $arr = [1, 2, 3, 4, 5]; // 遍历数组,执行回调 $res = array_map(function ($num) { return $num * $num; }, $arr); var_dump($res);
以上代码输出如下:
array (size=5) 0 => int 1 1 => int 4 2 => int 9 3 => int 16 4 => int 25
举例2,并行遍历多个数组元素,调用回调函数:
<?php $arr1 = [1, 2, 3, 4, 5]; $arr2 = [1, 2, 3, 4, 5]; // 遍历数组,执行回调 $res = array_map(function ($num1, $num2) { return $num1 + $num2; }, $arr1, $arr2); var_dump($res);
以上代码输出如下:
array (size=5) 0 => int 2 1 => int 4 2 => int 6 3 => int 8 4 => int 10
举例3,并行遍历多个数组元素,调用null回调函数:
<?php $arr1 = [1, 2, 3, 4, 5]; $arr2 = ['a', 'b', 'c', 'd', 'e']; // 遍历数组,执行null回调 $res = array_map(null, $arr1, $arr2); var_dump($res);
以上代码输出如下(返回多维数组):
array (size=5) 0 => array (size=2) 0 => int 1 1 => string 'a' (length=1) 1 => array (size=2) 0 => int 2 1 => string 'b' (length=1) 2 => array (size=2) 0 => int 3 1 => string 'c' (length=1) 3 => array (size=2) 0 => int 4 1 => string 'd' (length=1) 4 => array (size=2) 0 => int 5 1 => string 'e' (length=1)