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()
返回一个数组,其中包含array1
将callback
函数应用于每个元素之后的所有元素。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 →