(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(),foreach,each(),call_user_func_array(),array_map()
和有關 callback 類型的訊息。