array_map

(PHP 4 >= 4.0.6, PHP 5)

array_map --  將回呼函數作用到給定陣列的單元上

說明

array array_map ( callback callback, array arr1 [, array ...] )

array_map() 返回一個陣列,該陣列包括了 arr1 中的所有單元經由 callback 作用過之後的單元。callback 接受的參數數目應該和傳遞給 array_map() 函數的陣列數目一致。

例子 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
)

例子 2. 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 作為回呼函數名來實現。

例子 3. 建立一個陣列的陣列

<?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
        )

)

參見 array_filter()array_reduce()array_walk() 和有關 callback 類型的訊息。