PHP マニュアル
前のページ |  | 次のページ

# array_map

(PHP 4 >= 4.0.6, PHP 5)

array_map -- 指定した配列の要素にコールバック関数を適用する

## 説明

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

array_map() は、`arr1`の 各要素に`callback`関数を適用した後、その全ての要素を含む要素を 返します。`callback`関数が受け付けるパラメータの数は、 array_map()に渡される配列の数に一致している必 要があります。

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

例 2. array_map() - using more arrays

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

This results:

    // 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(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
            )

    )

array_filter(), array_reduce(), array_walk()も参照してください。

前のページ | ホーム | 次のページ
array_keys | 上に戻る | array_merge_recursive