首页
学习
活动
专区
工具
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 →

扫码关注腾讯云开发者

领取腾讯云代金券