PHP マニュアル
前のページ |  | 次のページ

# array_walk

(PHP 3 >= 3.0.3, PHP 4, PHP 5)

array_walk -- 配列の全ての要素にユーザ関数を適用する

## 説明

bool array_walk ( array &array, callback funcname [, mixed userdata] )

成功した場合に `TRUE` を、失敗した場合に `FALSE` を返します。

`array` 配列の各要素にユーザ定義関数 `funcname` を適用します。通常、 `funcname` は引数を二つとります。 `array` パラメータの値が最初の引数、 キー/添字は二番目の引数となります。 オプションの `userdata` パラメータが指定された場合、 コールバック関数 `funcname` への三番目の引数として渡されます。

`funcname` 関数が、指定された引数より多いパラメータを必要とする 場合、array_walk()が`funcname` をコールする度にエラーレベル E_WARNING が 発生します。これらの警告は、array_walk() コールの前に PHP エラー演算子 @ を付けるか、error_reporting() により抑制することができます。

> 注意: `funcname` により配列の値そのものを変更する必要がある場合、 `funcname` の最初の引数は 参照 として渡す必要があります。この場合、配列の要素に加えた変更は、 配列自体に対して行われます。

> 注意: キー及び userdata を `funcname` に渡す処理は、 バージョン 4.0.0 で追加されました。

array_walk() は `array` の内部配列ポインタに影響されません。array_walk() はポインタの位置に関わらず配列の全てに渡って適用されます。

コールバック関数により配列自身を変更することはできません。 例えば、要素の追加、削除、要素の unset 等はできません。 array_walk() が適用される配列を 変更しようとすると、関数の動作を定義できず、 予期しない結果を得ることになります。

例 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<br />\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`

array_walk_recursive()、 create_function()、 list()、 foreach、 each()、 call_user_func_array() および array_map() も参照ください。 callback 型に関する情報.

前のページ | ホーム | 次のページ
array_walk_recursive | 上に戻る | array