PHP函数使用指南:array_map
array_map是PHP中一个非常常用的函数,它可以对数组中的每一个元素进行相同的操作,将操作后的结果返回新的数组。array_map实现了一种很简单的编程模式:输入一些数据,对每个数据执行某些操作,并返回处理后的结果。本文将详细介绍array_map函数的使用方法。
函数介绍
array_map() 函数使用用户自定义函数作用于给定数组的每个值,并返回一个新数组,新数组中的值为用户自定义函数的返回值。
语法:
array_map(callable $callback, array|null $array1, array|null ...$arrays): array
参数:
callback:必需。规定数组中的每个元素应该如何处理的函数。
array1:必需。规定数组。
…$arrays:可选。规定数组。
返回值:
array_map() 函数返回一个新数组,该数组包含了将用户回调函数作用于每个数组元素后的返回值。
简单使用
首先,定义一个自定义的函数来对每个数组元素进行操作,如下:
function power($n)
{
return($n * $n);
}
然后定义一个数组:
$arr = [1, 2, 3, 4, 5];
然后使用array_map函数对数组中每个元素进行平方操作:
$result = array_map("power", $arr);
最后,输出结果:
print_r($result);
输出如下:
Array
(
[0] => 1
[1] => 4
[2] => 9
[3] => 16
[4] => 25
)
使用回调函数
上一个例子中,定义了一个power函数来对每个数组元素进行操作。实际上,PHP中还有很多内置的回调函数可以使用。比如将数组中的所有元素变成大写字母:
$arr = ["apple", "banana", "strawberry"];
$result = array_map("strtoupper", $arr);
print_r($result);
输出如下:
Array
(
[0] => APPLE
[1] => BANANA
[2] => STRAWBERRY
)
使用匿名函数
在PHP7.4中,推出了一种新的语法,可以使用匿名函数来简化代码。可以在回调函数中编写匿名函数,如下:
$arr = [1, 2, 3, 4, 5];
$result = array_map(fn($n) => $n * $n, $arr);
print_r($result);
输出如下:
Array
(
[0] => 1
[1] => 4
[2] => 9
[3] => 16
[4] => 25
)
可以看到,使用匿名函数代码更简洁了。
多个数组处理
array_map函数可以同时处理多个数组。如果有$n$个数组,则回调函数就有$n$个参数,每个参数对应一个数组中的元素。如下:
$arr1 = [1, 2, 3];
$arr2 = [4, 5, 6];
$arr3 = [7, 8, 9];
$result = array_map(fn($a, $b, $c) => $a + $b + $c, $arr1, $arr2, $arr3);
print_r($result);
输出如下:
Array
(
[0] => 12
[1] => 15
[2] => 18
)
可以看到,$result数组中的每个元素都是对应的三个数组中的元素相加的结果。
注意事项
在使用array_map函数时,需要注意以下几点:
传递给回调函数的数组元素是按照给定数组中顺序处理的。
在处理多个数组时,如果数组的长度不同时,将会以最短的数组为基准,将其他数组对应的元素作为null传递给回调函数。
如果回调函数返回null,该元素将会被删除,因此返回的结果数组可能会少于原始数组的长度。
为了避免数组中的值被修改,可以使用copy函数将原始数组复制到一个新数组中,再使用array_map对新数组进行操作。
总结
本文介绍了PHP中array_map函数的使用方法,其可用于对数组中的每个元素进行相同的操作。array_map函数会返回一个新的数组,其元素为回调函数处理数组元素后的结果。array_map函数还支持多个数组同时处理的功能。
