array_walk 配列の全ての要素にユーザー定義の関数を適用する &reftitle.description; truearray_walk arrayobjectarray callablecallback mixedarg&null; array 配列の各要素にユーザー定義関数 callback を適用します。 array_walkarray の内部配列ポインタに影響されません。array_walk はポインタの位置に関わらず配列の全てに渡って適用されます。 &reftitle.parameters; array 入力の配列。 callback 通常、 callback は引数を二つとります。 array パラメータの値が最初の引数、 キー/添字は二番目の引数となります。 callback により配列の値そのものを変更する必要がある場合、 callback の最初の引数は リファレンス として渡す必要があります。この場合、配列の要素に加えた変更は、 配列自体に対して行われます。 内部関数の多く (たとえば strtolower) は、 期待しているよりも多い引数を受け取ると例外がスローされます。 そのため、callback に直接指定することはできません。 変更される可能性があるのは配列の値だけであり、 その構造を変更することはできません。つまり、 プログラマは要素の追加や削除そして並べ替えなどができないということです。 コールバック関数がこの条件を満たさない場合は、 この関数の動作は未定義で予期せぬ結果を得ることになります。 arg オプションの arg パラメータが指定された場合、 コールバック関数 callback への三番目の引数として渡されます。 &reftitle.returnvalues; &return.true.always; &reftitle.errors; PHP 7.1.0 以降では、callback 関数が 2個より多いパラメータ(配列メンバーの値およびキー)を必要とする場合、 または、(arg も渡されている場合) 3個より多いパラメータを必要とする場合、 ArgumentCountError がスローされます。 7.1.0 より前のバージョンでは、callback 関数が 2 つより多いパラメータを必要とする場合、 array_walkcallback をコールする度にエラーレベル E_WARNING が 発生させていました。 &reftitle.changelog; &Version; &Description; &return.type.true; 8.0.0 callback が、 2番目と3番目の引数にリファレンス渡しされる引数を期待している場合、 この関数は E_WARNING を発生させるようになりました。 &reftitle.examples; <function>array_walk</function> の例 "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'); ?> ]]> &example.outputs; 無名関数を使った、<function>array_walk</function> の例 {$value}\n"; }); ?> ]]> &example.outputs; a 1 => b 2 => c ]]> &reftitle.seealso; array_walk_recursive iterator_apply list each call_user_func_array array_map &foreach;