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