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 正在作用的数组。如果数组改变了,本函数的行为没有定义。 <function>array_walk</function> 例子 "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'); ]]>
以上程序输出为:
参见 eachlist