📜  php中的array_map(1)

📅  最后修改于: 2023-12-03 15:33:40.557000             🧑  作者: Mango

PHP中的array_map

array_map是PHP中内置的一个非常有用的函数,它可以对一个数组中的每个元素都执行回调函数,并返回一个新的数组,新数组中的元素是回调函数返回的值。下面介绍一些array_map的用法和注意事项。

语法

array_map的语法如下:

array_map ( callable $callback , array ...$arrays ) : array

参数解释:

  • callback:回调函数,可以是函数名的字符串,也可以是一个匿名函数。回调函数接收的参数个数为传入的数组个数,顺序与array_map中传入的数组顺序一致。如果数组个数不一致,较短的数组将用null填充。

  • arrays:一个或多个数组,将对这些数组中的元素进行操作。如果有多个数组,它们的元素将按顺序传递给回调函数。

  • 返回值:一个新的数组,其中的元素是回调函数返回值组成的集合。

示例

下面展示一些array_map的示例。

示例一:将数组中的所有元素都转成大写
$fruits = array("apple", "banana", "orange");
$new_fruits = array_map('strtoupper', $fruits);
print_r($new_fruits);

输出:

Array
(
    [0] => APPLE
    [1] => BANANA
    [2] => ORANGE
)

解释:strtoupper是一个内置的函数,将字符串转成大写。array_mapstrtoupper作为回调函数传入,对数组$fruits中的每个元素都执行了strtoupper,并返回了一个新的数组$new_fruits

示例二:将两个数组中的元素依次相加
$a = array(2, 4, 6);
$b = array(1, 3, 5);
$c = array_map(function($x, $y){ return $x + $y; }, $a, $b);
print_r($c);

输出:

Array
(
    [0] => 3
    [1] => 7
    [2] => 11
)

解释:这里使用了匿名函数作为回调函数,对数组$a$b中的元素依次执行了相加操作,并返回了一个新的数组$c

注意事项
  • 回调函数的参数数量必须和传入array_map的数组数量一致。

  • 如果回调函数返回了null,那么对应的元素在新数组中会丢失。

  • 如果传入了一个空数组,array_map会返回一个空数组。如果没有传入数组,则会报错。

  • 如果传入的数组中有null元素,那么回调函数将不会被执行。

  • 如果传入回调函数的参数是引用类型,它们会被修改。

结语

array_map是一个非常实用的函数,它可以减少写重复代码的情况。当你需要对一个数组进行批量操作时,array_map可以帮助你快速地完成。同时,使用回调函数,你可以对数组中的元素进行任何你希望执行的较为复杂的操作。