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 →
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com