array_map 为数组的每个元素应用回调函数
发表日期:2021-07-01 08:57:07 | 来源: | | 浏览(795) 分类:数组 函数
array_map
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
array_map — 为数组的每个元素应用回调函数
说明
$callback
, array $array
, array ...$arrays
): array
array_map():返回数组,是为 array
每个元素应用 callback
函数之后的数组。
array_map() 返回一个 array,数组内容为 array1
的元素按索引顺序为参数调用 callback
后的结果(有更多数组时,还会传入 arrays
的元素)。
callback
函数形参的数量必须匹配 array_map() 实参中数组的数量。
参数
-
callback
-
回调函数 callable,应用到每个数组里的每个元素。
多个数组操作合并时,
callback
可以设置为null
。 如果只提供了array
一个数组, array_map() 会返回输入的数组。 -
array
-
数组,遍历运行
callback
函数。 -
arrays
-
额外的数组列表,每个都遍历运行
callback
函数。
返回值
返回数组,包含 callback
函数处理之后 array
(有多个数组时,为 arrays
) 对应索引所有元素作为函数的参数。
当仅仅传入一个数组时,返回的数组会保留传入参数的键(key)。 传入多个数组时,返回的数组键是按顺序的 integer。
范例
示例 #1 array_map() 例子
<?php function cube($n){ return ($n * $n * $n); } $a = [1, 2, 3, 4, 5]; $b = array_map('cube', $a); print_r($b); ?>
这使得 $b 成为:
Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )
示例 #2 array_map() 使用匿名函数 (PHP 5.3.0 起)
<?php $func = function($value) { return $value * 2; } ; print_r(array_map($func, range(1, 5))); ?>
Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 [4] => 10 )
示例 #3 array_map():使用更多的数组
<?php function show_Spanish($n, $m){ return "The number { $n} is called { $m} in Spanish"; } function map_Spanish($n, $m){ return [$n => $m]; } $a = [1, 2, 3, 4, 5]; $b = ['uno', 'dos', 'tres', 'cuatro', 'cinco']; $c = array_map('show_Spanish', $a, $b); print_r($c); $d = array_map('map_Spanish', $a , $b); print_r($d); ?>
以上例程会输出:
// printout of $c Array ( [0] => The number 1 is called uno in Spanish [1] => The number 2 is called dos in Spanish [2] => The number 3 is called tres in Spanish [3] => The number 4 is called cuatro in Spanish [4] => The number 5 is called cinco in Spanish ) // printout of $d Array ( [0] => Array ( [1] => uno ) [1] => Array ( [2] => dos ) [2] => Array ( [3] => tres ) [3] => Array ( [4] => cuatro ) [4] => Array ( [5] => cinco ) )
传入两个及以上的数组时,它们元素数量将会相同。因为回调函数会并行地处理相互对应的元素。 如果几个数组的元素数量不一致:空元素会扩展短那个数组,直到长度和最长的数组一样。
此函数有个有趣的用法:传入 null
作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)
示例 #4 多个数组的合并操作
<?php $a = [1, 2, 3, 4, 5]; $b = ['one', 'two', 'three', 'four', 'five']; $c = ['uno', 'dos', 'tres', 'cuatro', 'cinco']; $d = array_map(null, $a, $b, $c); print_r($d); ?>
以上例程会输出:
Array ( [0] => Array ( [0] => 1 [1] => one [2] => uno ) [1] => Array ( [0] => 2 [1] => two [2] => dos ) [2] => Array ( [0] => 3 [1] => three [2] => tres ) [3] => Array ( [0] => 4 [1] => four [2] => cuatro ) [4] => Array ( [0] => 5 [1] => five [2] => cinco ) )
示例 #5
仅有 array1
时,callback
设置为 null
<?php $array = [1, 2, 3]; var_dump(array_map(null, $array)); ?>
以上例程会输出:
array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
示例 #6 array_map() 键(key)是 string
<?php $arr = array("stringkey" => "value"); function cb1($a) { return [$a]; } function cb2($a, $b) { return [$a, $b]; } var_dump(array_map('cb1', $arr)); var_dump(array_map('cb2', $arr, $arr)); var_dump(array_map(null, $arr)); var_dump(array_map(null, $arr, $arr)); ?>
以上例程会输出:
array(1) { ["stringkey"]=> array(1) { [0]=> string(5) "value" } } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } } array(1) { ["stringkey"]=> string(5) "value" } array(1) { [0]=> array(2) { [0]=> string(5) "value" [1]=> string(5) "value" } }
参见
- array_filter() - 使用回调函数过滤数组的元素
- array_reduce() - 用回调函数迭代地将数组简化为单一的值
- array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- array_change_key_case 将数组中的所有键名修改为全大写或小写(0)
- array_chunk 将一个数组分割成多个(0)
- array_column 返回数组中指定的一列(0)
- array_combine 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值(0)
- array_count_values 统计数组中所有的值(0)
- array_diff_assoc 带索引检查计算数组的差集(0)
- array_diff_key 使用键名比较计算数组的差集(0)
- array_diff_uassoc 用用户提供的回调函数做索引检查来计算数组的差集(0)
- array_diff_ukey 用回调函数对键名比较计算数组的差集(0)
- array_diff 计算数组的差集(0)
- array_fill_keys 使用指定的键和值填充数组(0)
- array_fill 用给定的值填充数组(0)
- array_filter 使用回调函数过滤数组的元素(0)
- array_flip 交换数组中的键和值(0)
- array_intersect_assoc 带索引检查计算数组的交集(0)
- array_intersect_key 使用键名比较计算数组的交集(0)
- array_intersect_uassoc 带索引检查计算数组的交集,用回调函数比较索引(0)
- array_intersect_ukey 在键名上使用回调函数来比较计算数组的交集(0)
- array_intersect 计算数组的交集(0)
- array_key_exists 检查数组里是否有指定的键名或索引(0)
- array_key_first 获取指定数组的第一个键值(0)
- array_key_last 获取一个数组的最后一个键值(0)
- array_keys 返回数组中部分的或所有的键名(0)
- array_map 为数组的每个元素应用回调函数(0)
- array_merge_recursive 递归地合并一个或多个数组(0)
- array_merge 合并一个或多个数组(0)
- array_multisort 对多个数组或多维数组进行排序(0)
- array_pad 以指定长度将一个值填充进数组(0)
- array_pop 弹出数组最后一个单元(出栈)(0)
- array_product 计算数组中所有值的乘积(0)
- array_push 将一个或多个单元压入数组的末尾(入栈)(0)
- array_rand 从数组中随机取出一个或多个随机键(0)
- array_reduce 用回调函数迭代地将数组简化为单一的值(0)
- array_replace_recursive 使用传递的数组递归替换第一个数组的元素(0)
- array_replace 使用传递的数组替换第一个数组的元素(0)
- array_reverse 返回单元顺序相反的数组(0)
- array_search 在数组中搜索给定的值,如果成功则返回首个相应的键名(0)
- array_shift 将数组开头的单元移出数组(0)
- array_slice 从数组中取出一段(0)
- array_splice 去掉数组中的某一部分并用其它值取代(0)
- array_sum 对数组中所有值求和(0)
- array_udiff_assoc 带索引检查计算数组的差集,用回调函数比较数据(0)
- array_udiff_uassoc 带索引检查计算数组的差集,用回调函数比较数据和索引(0)
- array_udiff 用回调函数比较数据来计算数组的差集(0)
- array_uintersect_assoc 带索引检查计算数组的交集,用回调函数比较数据(0)
- array_uintersect_uassoc 带索引检查计算数组的交集,用单独的回调函数比较数据和索引(0)
- array_uintersect 计算数组的交集,用回调函数比较数据(0)
- array_unique 移除数组中重复的值(0)
- array_unshift 在数组开头插入一个或多个单元(0)
- array_values 返回数组中所有的值(0)
- array_walk_recursive 对数组中的每个成员递归地应用用户函数(0)
- array_walk 使用用户自定义函数对数组中的每个元素做回调处理(0)
- array 新建一个数组(0)
- arsort 对数组进行降向排序并保持索引关系(0)
- asort 对数组进行升序排序并保持索引关系(0)
- compact 建立一个数组,包括变量名和它们的值(0)
- count 计算数组中的单元数目,或对象中的属性个数(0)
- current 返回数组中的当前值(0)
- each 返回数组中当前的键/值对并将数组指针向前移动一步(0)
- end 将数组的内部指针指向最后一个单元(0)
- extract 从数组中将变量导入到当前的符号表(0)
- in_array 检查数组中是否存在某个值(0)
- key_exists 别名 array_key_exists()(0)
- key 从关联数组中取得键名(0)
- krsort 对数组按照键名逆向排序(0)
- ksort 对数组根据键名升序排序(0)
- list 把数组中的值赋给一组变量(0)
- natcasesort 用“自然排序”算法对数组进行不区分大小写字母的排序(0)
- natsort 用“自然排序”算法对数组排序(0)
- next 将数组中的内部指针向前移动一位(0)
- pos current() 的别名(0)
- prev 将数组的内部指针倒回一位(0)
- range 根据范围创建数组,包含指定的元素(0)
- reset 将数组的内部指针指向第一个单元(0)
- rsort 对数组降序排序(0)
- shuffle 打乱数组(0)
- sizeof count() 的别名(0)
- sort 对数组升序排序(0)
- uasort 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联(0)
- uksort 使用用户自定义的比较函数对数组中的键名进行排序(0)
- usort 使用用户自定义的比较函数对数组中的值进行排序(0)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)