WithCoderWithCoderWithCoder

PHP数组函数 array_map (为数组的每个元素应用回调函数)

    在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)

欢迎分享交流,转载请注明出处:WithCoder » PHP数组函数 array_map (为数组的每个元素应用回调函数)