(PHP 4, PHP 5, PHP 7, PHP 8)
array_walk — 配列の全ての要素にユーザー定義の関数を適用する
array
配列の各要素にユーザー定義関数
callback
を適用します。
array_walk() は array
の内部配列ポインタに影響されません。array_walk()
はポインタの位置に関わらず配列の全てに渡って適用されます。
array
入力の配列。
callback
通常、
callback
は引数を二つとります。
array
パラメータの値が最初の引数、
キー/添字は二番目の引数となります。
注意:
callback
により配列の値そのものを変更する必要がある場合、callback
の最初の引数は リファレンス として渡す必要があります。この場合、配列の要素に加えた変更は、 配列自体に対して行われます。
注意:
内部関数の多く (たとえば strtolower()) は、 期待しているよりも多い引数を受け取ると警告が発生します。 そのため、
callback
に直接指定することはできません。
変更される可能性があるのは配列の値だけであり、 その構造を変更することはできません。つまり、 プログラマは要素の追加や削除そして並べ替えなどができないということです。 コールバック関数がこの条件を満たさない場合は、 この関数の動作は未定義で予期せぬ結果を得ることになります。
arg
オプションの arg
パラメータが指定された場合、
コールバック関数 callback
への三番目の引数として渡されます。
true
を返します。
PHP 7.1.0 以降では、callback
関数が
2個より多いパラメータ(配列メンバーの値およびキー)を必要とする場合、
または、(arg
も渡されている場合) 3個より多いパラメータを必要とする場合、
ArgumentCountError がスローされます。
7.1.0 より前のバージョンでは、callback
関数が 2 つより多いパラメータを必要とする場合、
array_walk() が callback
をコールする度にエラーレベル E_WARNING が
発生させていました。
バージョン | 説明 |
---|---|
8.0.0 |
callback が、
2番目と3番目の引数にリファレンス渡しされる引数を期待している場合、
この関数は E_WARNING を発生させるようになりました。
|
例1 array_walk() の例
<?php
$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\n";
}
echo "Before ...:\n";
array_walk($fruits, 'test_print');
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
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