array_walk 配列の全ての要素にユーザー関数を適用する &reftitle.description; boolarray_walk arrayarray callablefuncname mixeduserdata&null; array 配列の各要素にユーザー定義関数 funcname を適用します。 array_walkarray の内部配列ポインタに影響されません。array_walk はポインタの位置に関わらず配列の全てに渡って適用されます。 &reftitle.parameters; array 入力の配列。 funcname 通常、 funcname は引数を二つとります。 array パラメータの値が最初の引数、 キー/添字は二番目の引数となります。 funcname により配列の値そのものを変更する必要がある場合、 funcname の最初の引数は 参照 として渡す必要があります。この場合、配列の要素に加えた変更は、 配列自体に対して行われます。 内部関数の多く (たとえば strtolower) は、 期待しているよりも多い引数を受け取ると警告が発生します。 そのため、funcname に直接指定することはできません。 変更される可能性があるのは配列の値だけであり、 その構造を変更することはできません。つまり、 プログラマは要素の追加や削除そして並べ替えなどができないということです。 コールバック関数がこの条件を満たさない場合は、 この関数の動作は未定義で予期せぬ結果を得ることになります。 userdata オプションの userdata パラメータが指定された場合、 コールバック関数 funcname への三番目の引数として渡されます。 &reftitle.returnvalues; &return.success; &reftitle.errors; funcname 関数が、指定された引数より多いパラメータを必要とする 場合、array_walkfuncname をコールする度にエラーレベル E_WARNING が 発生します。これらの警告は、array_walk コールの前に PHP エラー演算子 @ を付けるか、error_reporting により抑制することができます。 &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;
&reftitle.seealso; array_walk_recursive iterator_apply create_function list each call_user_func_array array_map &seealso.callback; &foreach;