array_map()

PHPのarray_map()関数は、1つ又は複数の配列の全ての要素の値に、ユーザー定義関数を適用し、1つの配列として返す組み込み関数。

この関数を使うと、複数の配列を、ひとつの多次元配列にまとめたり、配列の配列を作ったりすることなどもできる。

コールバック関数を適用する配列がひとつだけの場合、キーと値の相関関係は維持される。複数の場合は、新たに数値キーを割り当てる。

定義

配列型 array_map( コールバック $callback, 配列型 $arr1[, 配列型 $...] );

パラメータ

コールバック $callback

コールバック関数。

配列要素の値に適用したいユーザー定義関数を指定する。

配列型 $arr1

コールバック関数を適用したい配列。

配列要素の値を、引数として、コールバック関数に渡す。

配列型 $…

オプション。

コールバック関数を適用したい配列は、カンマ,で区切り、複数指定できる。

戻り値

配列。

コールバック関数適用後の値を格納した配列。

構文

1つの配列の全ての要素の値に、ユーザー定義関数を適用

関数適用後の値の配列 = array_map( コールバック関数, 配列 );

「配列」の全ての要素の値に、「コールバック関数」を適用し、配列として返す。

「配列」の要素の値を、1つ目の引数として、「コールバック関数」に渡す。

複数の配列の全ての要素の値に、ユーザー定義関数を適用

関数適用後の値の配列 = array_map( コールバック関数, 配列1, 配列2, 配列3… );

「配列1~3」の全ての配列要素の値に、「コールバック関数」を適用し、1つの配列として返す。

「配列1」の要素の値を、1つ目の引数、「配列2」の要素の値を、2つ目の引数、「配列3」の要素の値を、3つ目の引数として、「コールバック関数」に渡す。

配列の配列を生成

コールバック関数に、「NULL」を指定すると、配列の配列を作ることができる。

配列の配列 = array_map( NULL, 配列1, 配列2, 配列3… );

「配列1~3」のそれぞれの1つ目の配列要素の値を格納した配列を、「配列の配列」の1つ目の配列要素として格納。

「配列1~3」のそれぞれの2つ目の配列要素の値を格納した配列を、「配列の配列」の2つ目の配列要素として格納。

「配列1~3」のそれぞれの3つ目の配列要素の値を格納した配列を、「配列の配列」の3つ目の配列要素として格納。

1つの配列の全ての要素の値に、メソッドを適用

関数適用後の値の配列 = array_map( array( クラス名, メソッド名 ), 配列 );

「配列」の全ての要素の値に、「メソッド名」のメソッドを適用し、配列として返す。

「配列」の要素の値を、1つ目の引数として、メソッドに渡す。

複数の配列の全ての要素の値に、メソッドを適用

関数適用後の値の配列 = array_map( array( クラス名, メソッド名 ), 配列1, 配列2, 配列3… );

「配列」の全ての要素の値に、「メソッド名」のメソッドを適用し、配列として返す。

「配列1」の要素の値を、1つ目の引数、「配列2」の要素の値を、2つ目の引数、「配列3」の要素の値を、3つ目の引数として、メソッドに渡す。

サンプル

配列の全ての要素の値に、ユーザー定義関数を適用

<pre>
<?php
function square( $arg ) {
    return $arg * $arg;
}
$varArrayA = array( 1, 2, 3, 4, 5 );
$varArrayB = array_map( "square", $varArrayA );
print_r( $varArrayB );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
)

複数の配列の全ての要素の値に、ユーザー定義関数を適用

<pre>
<?php
function sample( $arg1, $arg2, $arg3 ) {
    return $arg1 + $arg2 + $arg3;
}
$varArrayA = array( 1, 2, 3, 4, 5 );
$varArrayB = array( 2, 3, 4, 5, 6 );
$varArrayC = array( 3, 4, 5, 6, 7 );
$varArrayD = array_map( "sample", $varArrayA, $varArrayB, $varArrayC );
print_r( $varArrayD );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => 6
    [1] => 9
    [2] => 12
    [3] => 15
    [4] => 18
)

配列の全ての要素の値の文字列に、ユーザー定義関数を適用

<pre>
<?php
function editArray( $arg ) {
    return "{$arg}色";
}
$varArrayA = array( "白", "黒", "赤", "青", "緑" );
$varArrayB = array_map( "editArray", $varArrayA );
print_r( $varArrayB );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => 白色
    [1] => 黒色
    [2] => 赤色
    [3] => 青色
    [4] => 緑色
)

連想配列の全ての要素の値に、ユーザー定義関数を適用

コールバック関数を適用する配列がひとつだけの場合、キーと値の相関関係は維持されている点に注目。

<pre>
<?php
function editArray( $arg1 ) {
    return "{$arg1}色";
}
$varArrayA = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
$varArrayB = array_map( "editArray", $varArrayA );
print_r( $varArrayB );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [red] => 赤色
    [blue] => 青色
    [green] => 緑色
)

複数の連想配列の全ての要素の値に、ユーザー定義関数を適用

コールバック関数を適用する配列が複数の場合、キーと値の相関関係は維持されず、新たに数値キーを割り振っている点に注目。

<pre>
<?php
function editArray( $arg1, $arg2 ) {
    return "{$arg1}: {$arg2}色";
}
$varArrayA = array(
    "red" => "レッド",
    "blue" => "ブルー",
    "green" => "グリーン"
);
$varArrayB = array(
    "red" => "赤",
    "blue" => "青",
    "green" => "緑"
);
$varArrayC = array_map( "editArray", $varArrayA, $varArrayB );
print_r( $varArrayC );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => レッド: 赤色
    [1] => ブルー: 青色
    [2] => グリーン: 緑色
)

複数の配列から、多次元配列を生成

<pre>
<?php
function sample( $arg1, $arg2 ) {
    return ( array( $arg1 => $arg2 ) );
}
$varArrayA = array( "Red", "Blue", "Green" );
$varArrayB = array( "赤", "青", "緑" );
$varArrayC = array_map( "sample", $varArrayA, $varArrayB );
print_r( $varArrayC );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => Array
        (
            [Red] => 赤
        )

    [1] => Array
        (
            [Blue] => 青
        )

    [2] => Array
        (
            [Green] => 緑
        )

)

配列の配列を生成

コールバック関数に、「NULL」を指定すると、配列の配列を作ることができる。

<pre>
<?php
$varArrayA = array( "Red", "Blue", "Green" );
$varArrayB = array( "レッド", "ブル-", "グリーン" );
$varArrayC = array( "赤", "青", "緑" );
$varArrayD = array_map( NULL, $varArrayA, $varArrayB, $varArrayC );
print_r( $varArrayD );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => Array
        (
            [0] => Red
            [1] => レッド
            [2] => 赤
        )

    [1] => Array
        (
            [0] => Blue
            [1] => ブル-
            [2] => 青
        )

    [2] => Array
        (
            [0] => Green
            [1] => グリーン
            [2] => 緑
        )

)

1つの配列の全ての要素の値に、メソッドを適用

<pre>
<?php
class sample
{
    function cube( $arg ) {
        return $arg * $arg * $arg;
    }
}
$varArrayA = array( 1, 2, 3, 4, 5 );
$varArrayB = array_map( array( "sample", "cube" ), $varArrayA );
print_r( $varArrayB );
?>
</pre>

↓↓↓出力結果↓↓↓

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

複数の配列の全ての要素の値に、メソッドを適用

<pre>
<?php
class sample
{
    function color( $arg1, $arg2 ) {
        return "{$arg1}: {$arg2}";
    }
}
$varArrayA = array( "RED", "BLUE", "GREEN" );
$varArrayB = array( "赤", "青", "緑" );
$varArrayC = array_map( array( "sample", "color" ), $varArrayA, $varArrayB );
print_r( $varArrayC );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [0] => RED: 赤
    [1] => BLUE: 青
    [2] => GREEN: 緑
)

スポンサード リンク

カテゴリー: PHP, コールバック, 取得, 組み込み関数, 編集, 計算, 配列 タグ: パーマリンク