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

# array_map

(PHP 4 >= 4.0.6)

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

## 説明

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

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

例 1array_map() の例
    function cube($n) {
      	return $n*$n*$n;
    }

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

この例により `$b`には、`array (1, 8, 27, 64, 125);`が代入されます。

例 2array_map() - より多くの配列を使用
    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);

    // 出力:
    // 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
    // )

    $d = array_map("map_Spanish", $a , $b);

    print_r($d);

    // 出力:
    // Array
    // (
    //     [0] => Array
    //         (
    //             [1] => uno
    //         )
    //
    //     [1] => Array
    //         (
    //             [2] => dos
    //         )
    //
    //     [2] => Array
    //         (
    //             [3] => tres
    //         )
    //
    //     [3] => Array
    //         (
    //             [4] => cuatro
    //         )
    //
    //     [4] => Array
    //         (
    //             [5] => cinco
    //         )
    //
    // )

通常、二つ以上の配列を使用する場合、それらの長さは等しい必要があ ります。これは、コールバック関数が対応する要素に対して並行して適 用されるためです。配列の長さが等しくない場合、最も短い配列は空の 要素で拡張されます。

この関数の面白い使用方法として、配列の配列を構築するというものが あります。これは、コールバック関数の名前として `NULL`を使用することにより、簡単に実行できるもの です。

例 3配列の配列を作成する
    $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_keys | 上に戻る | array_merge_recursive