首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

array_map

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

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

描述

代码语言:javascript
复制
array array_map ( callable $callback , array $array1 [, array $... ] )

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

参数

callback

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

array1

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

...

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

返回值

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

示例

示例#1 array_map()示例

代码语言:javascript
复制
<?php
function?cube($n)
{
????return($n?*?$n?*?$n);
}

$a?=?array(1,?2,?3,?4,?5);
$b?=?array_map("cube",?$a);
print_r($b);
?>

这使得$ b有:

代码语言:javascript
复制
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Example#2使用lambda函数的array_map()(从PHP 5.3.0开始)

代码语言:javascript
复制
<?php
$func?=?function($value)?{
????return?$value?*?2;
};

print_r(array_map($func,?range(1,?5)));
?>
代码语言:javascript
复制
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

示例#3 array_map() - 使用更多数组

代码语言:javascript
复制
<?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);
?>

上面的例子将输出:

代码语言:javascript
复制
// 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创建一个数组数组

代码语言:javascript
复制
<?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);
?>

上面的例子将输出:

代码语言:javascript
复制
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() - 带有字符串键

代码语言:javascript
复制
<?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));
?>

上面的例子将输出:

代码语言:javascript
复制
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 →

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com