欢迎访问宙启技术站
智能推送

PHP函数使用指南:array_map

发布时间:2023-06-13 00:55:49

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函数还支持多个数组同时处理的功能。