Forum und email

array_walk

(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() が適用される配列を 変更しようとすると、関数の動作を定義できず、 予期しない結果を得ることになります。

Example#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()foreacheach()call_user_func_array() および array_map() callback 型に関する情報 も参照ください。