array_walk

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

array_walk -- 對陣列中的每個成員套用會員函數

說明

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

若果成功則返回 TRUE,失敗則返回 FALSE

將會員自訂函數 funcname 套用到 array 陣列中的每個單元。典型情況下 funcname 接受兩個參數。array 參數的值作為第一個,鍵名作為第二個。若果提供了可選參數 userdata,將被作為第三個參數傳遞給 callback funcname

若果 funcname 函數需要的參數比給出的多,則每次 array_walk() 呼叫 funcname 時都會產生一個 E_WARNING 級的錯誤。這些警示可以通過在 array_walk() 呼叫前加上 PHP 的錯誤動作符 @ 來抑制,或是用 error_reporting()

注: 若果 funcname 需要直接作用於陣列中的值,則給 funcname 的第一個參數指定為引用。這樣任何對這些單元的改變也將會改變原始陣列本身。

注: 將鍵名和 userdata 傳遞到 funcname 中是 PHP 4.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()foreacheach()call_user_func_array()array_map() 和有關 callback 類型的訊息。