PHP array_map() 函数使用及示例

王林
王林 原创
2023-06-27 10:16:01 757浏览

PHP中有很多内置的函数,其中 array_map() 函数是一个非常有用的函数之一。该函数可以接受一个或多个数组作为输入,并返回一个新的数组,新数组的每个元素都是输入数组经过回调函数处理后的结果。array_map() 函数主要用于简化操作,例如对一个数组中的每个元素进行操作并返回新的数组。

array_map() 函数的语法如下:

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

其中,$callback 是回调函数,$arrays 是一个或多个数组。函数会遍历 $arrays 中的所有数组,对每个数组的元素依次调用回调函数,最后返回一个包含所有新元素的数组。

回调函数就是对输入元素进行操作的函数。回调函数接收的参数数目必须和输入数组的元素数目相同,并且第一个参数永远是输入数组的一个元素。回调函数可以有多个输入数组,但每个输入数组的元素数量必须相同。

下面是一个简单的例子,使用 array_map() 函数将一个数组中的元素加倍:

function double($n) {
  return $n * 2;
}

$numbers = array(1, 2, 3, 4, 5);
$doubled = array_map('double', $numbers);

print_r($doubled);

输出:

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

在这个例子中,我们首先定义一个回调函数 double(),它将输入数值乘以 2 并返回结果。然后我们定义一个数组 $numbers,其中包含 1 到 5 的整数。接下来,我们调用 array_map(),将 double() 函数作为回调函数,将 $numbers 数组作为输入。最后,我们将输出存储在 $doubled 数组中,并在屏幕上打印出来。

我们还可以在回调函数中使用多个输入数组。例如,可以使用 array_map() 对两个数组中的元素进行求和:

function sum($a, $b) {
  return $a + $b;
}

$numbers1 = array(1, 2, 3, 4, 5);
$numbers2 = array(10, 20, 30, 40, 50);
$summed = array_map('sum', $numbers1, $numbers2);

print_r($summed);

输出:

Array
(
    [0] => 11
    [1] => 22
    [2] => 33
    [3] => 44
    [4] => 55
)

在这个例子中,我们定义了一个新的回调函数 sum(),它接受两个输入参数并将它们相加。我们创建两个数组 $numbers1 和 $numbers2,然后将它们传递给 array_map() 函数,带着 sum() 函数作为回调。函数返回一个新的数组 $summed,它包括 $numbers1 和 $numbers2 数组中的元素相加的结果。

array_map() 还有一个使用非常广泛的特性:使用匿名函数作为回调函数。匿名函数是 PHP 5.3 引入的新特性,它允许我们在必要时动态创建函数。下面是一个使用匿名函数的例子,计算一个字符串数组中所有字符串的长度:

$strings = array('hello', 'world', 'goodbye');
$lengths = array_map(function($str) { return strlen($str); }, $strings);

print_r($lengths);

输出:

Array
(
    [0] => 5
    [1] => 5
    [2] => 7
)

在这个例子中,我们定义了一个匿名函数,它接受一个字符串作为输入并返回该字符串的长度。我们将这个匿名函数作为回调函数传递给 array_map() 函数,使用 $strings 数组作为输入。最后,输出一个新的数组 $lengths,其中包括 $strings 数组中所有字符串的长度。

总之,array_map() 函数是一个非常有用的工具,可以使数组操作更加清晰和简洁。回调函数的可定制性也非常高,可以轻松地对各种数据类型进行操作。希望这篇文章能够帮助你更好地理解和使用 array_map() 函数。

以上就是PHP array_map() 函数使用及示例的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。