PHP

array_map

array_map

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

array_map - 将回调应用于给定数组的元素

描述

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

array_map()返回一个数组,其中包含array1callback函数应用于每个元素之后的所有元素。callback函数接受的参数数量应该与传递给array_map()的数组数量相匹配

参数

callback

回调函数为每个数组中的每个元素运行。

array1

一个数组来运行该callback函数。

...

要通过callback函数运行的数组参数的变量列表。

返回值

array1在将callback函数应用于每个元素之后,返回包含所有元素的数组。

示例

示例#1 array_map()示例

<?php function cube($n) {     return($n * $n * $n } $a = array(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 )

Example#2使用lambda函数的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(array($n => $m) } $a = array(1, 2, 3, 4, 5 $b = array("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 = array(1, 2, 3, 4, 5 $b = array("one", "two", "three", "four", "five" $c = array("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 array_map() - 带有字符串键

<?php $arr = array("stringkey" => "value" function cb1($a) {     return array ($a } function cb2($a, $b) {     return array ($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() - 将用户提供的函数应用于数组的每个成员

  • 有关回调类型的信息

← array_keys

array_merge_recursive →