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() をコールする必要 があります。

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