array_walk
对数组中的每个成员应用用户函数
说明
intarray_walk
arrayarray
stringfunc
mixeduserdata
对 array 数组的每个单元应用用户自定义函数
func。数组中的值作为第一个参数,键名作为第二个参数传入
func 函数。如果提供了
userdata,将会被作为第三个参数传入用户函数。func
必须是一个用户自定义函数,而不能是 PHP 本来有的函数。因此不能在 array_walk
中直接使用 str2lower,必须先建立一个用户自定义函数,再把这个函数名当作参数传递进去。
¬e.func-callback;
如果 func 需要超过两个或三个参数(根据
userdata),每次 array_walk
调用 func 都会产生一个警告。这些警告可以通过在
array_walk 调用的前面加上“@”符号来抑制住,或者通过 error_reporting。
如果 func 需要直接作用于数组中的值,则 func
定义中的第一个参数应该用引用传递。这样任何对这些单元的改变也将会改变数组本身。
在 func 中修改数组可能会产生不可预知的行为。
将键名和 userdata 传递到 func 中是 PHP 4.0 新增加的。
在 PHP 4 中需要调用 reset,因为
array_walk 默认不会重置数组。
用户最好不要在回调函数中修改数组本身。例如添加/删除单元,unset
array_walk 正在作用的数组。如果数组改变了,本函数的行为没有定义。
array_walk 例子
"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");
function test_alter (&$item1, $key, $prefix) {
$item1 = "$prefix: $item1";
}
function test_print ($item2, $key) {
echo "$key. $item2
\n";
}
echo "Before ...:\n";
array_walk ($fruits, 'test_print');
reset ($fruits);
array_walk ($fruits, 'test_alter', 'fruit');
echo "... and after:\n";
reset ($fruits);
array_walk ($fruits, 'test_print');
]]>
以上程序输出为:
参见 each 和 list。