关于array_walk()函数的使用疑惑

aboutagirl 2004-05-10 12:04:54
比如类中有一个方法叫做test(),在test方法中通过array_walk()进行递归,这个时候array_walk()的第二个参数应该怎么写?

例如:


function pmyoutput(&$a) {
if (is_array($a)) {
array_walk($a,'pmyoutput');
} else {
$a = stripslashes($a);
}
}




注释:


array_walk

(PHP 3>= 3.0.3, PHP 4 )

array_walk -- 对数组中的每个成员应用用户函数
说明
int array_walk ( array array, string func [, mixed userdata])


对 array 数组的每个单元应用用户自定义函数 func。数组中的值作为第一个参数,键名作为第二个参数传入 func 函数。如果提供了 userdata,将会被作为第三个参数传入用户函数。func 必须是一个用户自定义函数,而不能是 PHP 本来有的函数。因此不能在 array_walk() 中直接使用 str2lower(),必须先建立一个用户自定义函数,再把这个函数名当作参数传递进去。

注: 第二个参数函数名可以替换为一个数组,该数组由一个对象名和该对象名的一个方法名两个元素组成。

如果 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() 正在作用的数组。如果数组改变了,本函数的行为没有定义。
...全文
122 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
aboutagirl 2004-05-10
  • 打赏
  • 举报
回复
我是说后面要调用的是类之中的一个方法
似乎不能通过$this->达到目的,

按注释上说得使用数组也不行,可能是我用得不对:
按照说明我把func参数改为了一个数组:
$func[]='this';
$func[]='pmyoutput';

也提示错误

郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊郁闷啊
52juanjuan 2004-05-10
  • 打赏
  • 举报
回复
直接写函数名不行吗?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧