array_walk 配列の全ての要素にユーザー関数を適用する。 説明 boolarray_walk arrayarray callbackfuncname mixeduserdata &return.success; array 配列の各要素にユーザ定義関数 funcnameを適用します。通常、 funcname は引数を二つとります。 array パラメータの値が最初の引数、 キー/添字は二番目の引数となります。 オプションの userdata パラメータが指定された場合、 コールバック関数 funcname への三番目の引数として 渡されます。 funcname 関数が、指定された引数より多いパラメータを必要とする 場合、array_walkfuncname をコールする度にエラーレベル E_WARNING が、 発生します。これらの警告は、array_walkコールの前に PHPエラー演算子@ を付けるか、error_reportingにより抑制することができます。 funcnameにより配列の値そのものを変更する必要 がある場合、funcnameの最初の引数は 参照として 渡す必要があります。この場合、配列の要素に加えた変更は、配列自体 に対して行われます。 キー及びuserdataをfuncnameに渡す処理は、 バージョン4.0.0で追加されました。 array_walkarrayの 内部配列ポインタに影響されません。array_walkは ポインタの位置に関わらず配列の全てに渡って適用されます。 ポインタをリセットするにはresetを 使用してください。PHP3ではarray_walkは ポインタをリセットします。 コールバック関数により配列自身を変更することはできません。 例えば、要素の追加、削除、要素のunset等はできません。 array_walkが適用される配列を 変更しようとすると、関数の動作を定義できず、予期しない結果を 得ることになります。 <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;
array_walk_recursive, create_function, list, foreach, each, call_user_func_array, array_map, &seealso.callback; も参照してください。