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

# array_walk

(PHP 3>= 3.0.3, PHP 4 )

array_walk -- 配列の各メンバーにユーザー関数を適用する。

## 説明

int array_walk ( array arr, string func [, mixed userdata])

`arr`の各要素に`func` という名前のユーザ定義関数を適用します。 `func`には、配列の値が最初の引数として 渡され、配列のキーが2番目のパラメータとして渡されます。 `userdata`が指定された場合、3番目の引数として ユーザー関数に渡されます。`func`はユーザ定義の 関数である必要があり、ネーティブなPHP関数は使用できません。 つまり、array_walk()を直接 str2lower()と組み合わせることて使用することは できません。まず、この関数を用いてユーザ定義関数を構築し、その関数 を引数として渡す必要があります。

> 注意関数名の代わりに、オブジェクトへのリファレンスを格納した配列とメソッド名を指定することも出来ます。

`func`が2つまたは3つを超える引数を必要とする場合、 `userdata`の指定によっては、 array_walk()が`func` をコールする度に警告が生成されます。これらの警告は、 array_walk()の前に'@'マークを付けるか error_reporting()を使用することにより 抑制されます。

> 注意 `func`により配列の値そのものを変更する必要 がある場合、`func`の最初の引数は参照として 渡す必要があります。この場合、配列の要素に加えた変更は、配列自体 に対して行われます。

> `func`の中から配列を修正すると予測できない 動作を引き起こす可能性があります。

> 注意 キー及びuserdataを`func`に渡す処理は、 バージョン4.0で追加されました。

> PHP 4では、array_walk()で配列のリセットがデフォ ルトで行われないため、reset()をコールする必要 があります。

例 1array_walk()の例

    $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

    function test_alter (&$item1, $key, $prefix) {
        $item1 = "$prefix: $item1";
    }

    function test_print ($item2, $key) {
        echo "$key. $item2<br>\n";
    }
    echo "Before ...:\n";
    array_walk ($fruits, 'test_print');
    reset ($fruits);
    array_walk ($fruits, 'test_alter', 'fruit');
    echo "... and after:\n";
    reset ($fruits);
    array_walk ($fruits, 'test_print');

上記のプログラムの出力は次のようになります。

    Before ...:
    d. lemon
    a. orange
    b. banana
    c. apple
    ... and after:
    d. fruit: lemon
    a. fruit: orange
    b. fruit: banana
    c. fruit: apple

each()およびlist() も参照下さい。

前のページ | ホーム | 次のページ
array_values | 上に戻る | array