array_map

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

array_map 为数组的每个元素应用回调函数

说明

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

array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

参数

callback

回调函数,应用到每个数组里的每个元素。

array1

数组,遍历运行 callback 函数。

...

数组列表,每个都遍历运行 callback 函数。

返回值

返回数组,包含 callback 函数处理之后 array1 的所有元素。

范例

Example #1 array_map() 例子

<?php
function cube($n)
{
    return(
$n $n $n);
}

$a = array(12345);
$b array_map("cube"$a);
print_r($b);
?>

这使得 $b 成为:

Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)

Example #2 array_map() 使用匿名函数 (PHP 5.3.0 起)

<?php
$func 
= function($value) {
    return 
$value 2;
};

print_r(array_map($funcrange(15)));
?>
Array
(
    [0] => 2
    [1] => 4
    [2] => 6
    [3] => 8
    [4] => 10
)

Example #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(12345);
$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 作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)

Example #4 多维数组:创建数组,内部包含数组

<?php
$a 
= array(12345);
$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
        )

)

如果仅传入一个数组,键(key)会保留;传入多个数组,键(key)是整型数字的序列。

Example #5 array_map() 键(key)是 string

<?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() - 使用用户自定义函数对数组中的每个元素做回调处理
  • callback 类型的信息

相关文章
php 数组 函数 用用户提供的回调函数做索引检查来计算数组的差集php 数组 函数 用回调函数对键名比较计算数组的差集php 数组 函数 用回调函数过滤数组中的单元php 数组 函数 带索引检查计算数组的交集,用回调函数比较索引php 数组 函数 用回调函数比较键名来计算数组的交集php 数组 函数 为数组的每个元素应用回调函数php 数组 函数 用回调函数迭代地将数组简化为单一的值php 数组 函数 使用传递的数组递归替换第一个数组的元素php 数组 函数 使用传递的数组替换第一个数组的元素php 数组 函数 带索引检查计算数组的差集,用回调函数比较数据php 数组 函数 带索引检查计算数组的差集,用回调函数比较数据和索引php 数组 函数 用回调函数比较数据来计算数组的差集php 数组 函数 带索引检查计算数组的交集,用回调函数比较数据php 数组 函数 带索引检查计算数组的交集,用单独的回调函数比较数据和索引php 数组 函数 计算数组的交集,用回调函数比较数据php 数组 函数 对数组中的每个成员递归地应用用户函数php 数组 函数 使用用户自定义函数对数组中的每个元素做回调处理php 函数处理 函数 调用回调函数,并把一个数组参数作为回调函数的参数php spl 函数 为迭代器中每个元素调用一个用户自定义函数php spl 函数 将迭代器中的元素拷贝到数组
关注编程学问公众号