array_walk_recursive()

PHPのarray_walk_recursive()関数は、多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用する組み込み関数。

定義

論理型 array_walk_recursive( 配列型 &$input, コールバック $funcname[, 多様な型 $userdata] );

パラメータ

配列型 &$input

コールバック関数を再帰的に適用したい多次元配列。

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

コールバック $funcname

コールバック関数。

多次元配列に再帰的に適用したいユーザー定義関数を指定する。

多様な型 $userdata

オプション。

コールバック関数に渡す3つ目の引数を指定できる。

戻り値

論理型。

成功すると「TRUE」、失敗すると「FALSE」を返す。

構文

多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用

論理値 = array_walk_recursive( 多次元配列, コールバック関数 );

「多次元配列」の全ての要素に、「コールバック関数」を再帰的に適用。

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

多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用(追加引数)

論理値 = array_walk_recursive( 多次元配列, コールバック関数, 追加引数 );

「多次元配列」の全ての要素に、「コールバック関数」を再帰的に適用。

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

「追加引数」を、配列にすれば、複数の値を渡すこともできる。

サンプル

多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用

<?php
function printArray( $arg1, $arg2 ) {
    echo "{$arg2}: {$arg1}<br />";
}
$varArray = array(
    "english" => array(
        "red" => "レッド",
        "blue" => "ブルー",
        "green" => "グリーン"
    ),
    "kanji" => array(
        "aka" => "赤",
        "ao" => "青",
        "midori" => "緑"
    )
);
array_walk_recursive( $varArray, "printArray" );
?>

↓↓↓出力結果↓↓↓

red: レッド
blue: ブルー
green: グリーン
aka: 赤
ao: 青
midori: 緑

多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用(追加引数)

<?php
function printArray( $arg1, $arg2, $arg3 ) {
    echo "{$arg3}: {$arg2}: {$arg1}<br />";
}
$varArray = array(
    "english" => array(
        "red" => "レッド",
        "blue" => "ブルー",
        "green" => "グリーン"
    ),
    "kanji" => array(
        "aka" => "赤",
        "ao" => "青",
        "midori" => "緑"
    )
);
array_walk_recursive( $varArray, "printArray", "色" );
?>

↓↓↓出力結果↓↓↓

色: red: レッド
色: blue: ブルー
色: green: グリーン
色: aka: 赤
色: ao: 青
色: midori: 緑

多次元配列の全ての要素のキーと値に、
ユーザー定義関数を再帰的に適用(複数の追加引数)

<?php
function printArray( $arg1, $arg2, $arg3 ) {
    echo "{$arg3[0]}: {$arg2}: {$arg3[1]}: {$arg1}<br />";
}
$varArray = array(
    "english" => array(
        "red" => "レッド",
        "blue" => "ブルー",
        "green" => "グリーン"
    ),
    "kanji" => array(
        "aka" => "赤",
        "ao" => "青",
        "midori" => "緑"
    )
);
array_walk_recursive( $varArray, "printArray", array( "COLOR", "色" ) );
?>

↓↓↓出力結果↓↓↓

COLOR: red: 色: レッド
COLOR: blue: 色: ブルー
COLOR: green: 色: グリーン
COLOR: aka: 色: 赤
COLOR: ao: 色: 青
COLOR: midori: 色: 緑

多次元配列の全ての要素のキーと値に、ユーザー定義関数を再帰的に適用(参照渡し)

ユーザー定義関数に、配列要素の値を、参照渡しで受け渡すことにより、配列要素の値を変更することも可能。

<pre>
<?php
function editArray( &$arg1, $arg2 ) {
    $arg1 = "{$arg2}は、{$arg1}。";
}
$varArray = array(
    "english" => array(
        "red" => "レッド",
        "blue" => "ブルー",
        "green" => "グリーン"
    ),
    "kanji" => array(
        "aka" => "赤",
        "ao" => "青",
        "midori" => "緑"
    )
);
array_walk_recursive( $varArray, "editArray" );
print_r( $varArray );
?>
</pre>

↓↓↓出力結果↓↓↓

Array
(
    [english] => Array
        (
            [red] => redは、レッド。
            [blue] => blueは、ブルー。
            [green] => greenは、グリーン。
        )

    [kanji] => Array
        (
            [aka] => akaは、赤。
            [ao] => aoは、青。
            [midori] => midoriは、緑。
        )

)

スポンサード リンク

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