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

# array_walk

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

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

## 説明

bool array_walk ( array array, callback function [, mixed userdata])

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

arrayの各要素にfunction という名前のユーザ定義関数を適用します。 functionには、配列の値が最初の引数として 渡され、配列のキーが2番目のパラメータとして渡されます。 userdataが指定された場合、3番目の引数として ユーザー関数に渡されます。

functionが2つまたは3つを超える引数を必要とする場合、 userdataの指定によっては、 array_walk()がfunction をコールする度にE_WARNINGレベルの エラーが発行されます。これらのエラーは、 array_walk()の前に @エラー演算子を付けるか error_reporting()を使用することにより 抑制されます。

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

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

array_walk()はarrayの 内部配列ポインタに影響されません。array_walk()は ポインタの位置に関わらず配列の全てに渡って適用されます。 ポインタをリセットするにはreset()を 使用してください。PHP3では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`

list(), foreach, each(), call_user_func_array()も参照してください。

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