array_map()

1. 定义

该函数对数组中的每个元素都调用指定函数。 返回对数组元素调用指定函数之后的数组。

注:回调函数只处理元素值,而不会处理元素的键名。

2. 语法

array_map ( callable $callback , array $array1 [, array $... ] ) : array

3. 参数说明

参数 可选性 数据类型 描述
$callback 必需 可回调类型 回调函数
$array1 必需 数组 被调用回调函数的数组
$... 可选 数组 被调用回调函数的数组

注意,如果传入了两个及两个以上的数组参数,那么这几个数组的元素个数应该保持一致,如果数组长度不一致,那么按照最长的那个数组长度计算,长度不够的数组将会以空元素扩展。 因为回调函数$callback会并行地处理相互对应的元素。

4. 示例

<?php

// array_map()
// 对数组中的每个元素都调用指定函数

$arr1 = ['name'=>'极速数据', 'business'=>'PHP教程', 'work'=>'API参考'];
$arr2 = ['a', 'b', 'c', 'd', 'e'];

// 仅操作一个数组:键名可保留
function callback1($value)
{// 仅对第一个数组操作
    $prefix = 'jisu_';
    return $prefix.$value;
}
$res = array_map('callback1', $arr1);
var_dump($res);
/* 输出:
array(3) {
  ["name"]=>
  string(17) "jisu_极速数据"
  ["business"]=>
  string(14) "jisu_PHP教程"
  ["work"]=>
  string(14) "jisu_API参考"
}
*/

// 操作多个数组:回调函数的参数个数决定了该函数操作几个数组,并且其过程是并行的;另外传入多个数组时,键名被数字索引替换
function callback2($a, $b)
{// 对前两个数组操作
    return "第一个数组的值为:$a ,第二个数组同一位置的值为:$b";
}
$res = array_map('callback2', $arr1, $arr2);
var_dump($res);
/* 输出:
array(5) {
  [0]=>
  string(83) "第一个数组的值为:极速数据 ,第二个数组同一位置的值为:a"
  [1]=>
  string(80) "第一个数组的值为:PHP教程 ,第二个数组同一位置的值为:b"
  [2]=>
  string(80) "第一个数组的值为:API参考 ,第二个数组同一位置的值为:c"
  [3]=>
  string(71) "第一个数组的值为: ,第二个数组同一位置的值为:d"
  [4]=>
  string(71) "第一个数组的值为: ,第二个数组同一位置的值为:e"
}
*/

5. 延展阅读

  • array_filter():将数组中的每个值发送到指定的回调函数处理,如果回调函数返回 TRUE ,则该元素被添加至返回的数组,键名不变
  • array_reduce():迭代地处理数组中的每个元素,将数组迭代成一个单一的值
  • array_walk():使用用户自定义的回调函数处理指定数组的每一个元素