Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7">

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()も参照下さい。