为了账号安全,请及时绑定邮箱和手机立即绑定

这里的array_walk为什么要这样用?

查手册看到
bool array_walk ( array &$array , callable $funcname [, mixed $userdata = NULL ] )

第一个参数是数组,第二个参数是回调函数名

可是第97行老师写的为什么是写

array_walk ($fields , array('PdoMySQL','addSpecilChar'));

为什么不直接回调addSpecilChar?
array应该是返回一个数组吧,这样写不会有问题?

求解惑,谢了

正在回答

4 回答

这个意思是对$fields中的每一个元素执行了一次

 PdoMySQL::addSpecilChar($value)
$value就是$fields中的每一个元素
0 回复 有任何疑惑可以回复我~
#1

慕斯7032909

谢谢,这句话重要
2019-12-19 回复 有任何疑惑可以回复我~

array_walk()函数的作用是:使用用户自定义的函数对数组中的每个元素做回调处理,所以第一个参数为数组,第二个参数是回调函数名,但要在类内部应用array_walk()函数,有下面的规范:

如果回调函数是类中的静态方法,这样调用:

array_walk($array, array('self', 'walkFunction'));

或者:

array_walk($array, array('className', 'walkFunction')); // className指当前的类名

如果回调函数是类中的非静态方法:

array_walk($array, array($this, 'walkFunction')); //其中walkFunction为类的方法名

当然,如果你不在类中使用,回调函数就可以直接是函数名。例如这样:

<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_print($item, $key)
{
    echo "$key. $item<br />\n";
}
array_walk($fruits, 'test_print');
?>

结果为:

d. lemon
a. orange
b. banana
c. apple


1 回复 有任何疑惑可以回复我~

求大神解答

1 回复 有任何疑惑可以回复我~

Calling an array Walk inside a class

If the class is static:
array_walk($array, array('self', 'walkFunction'));
or
array_walk($array, array('className', 'walkFunction'));

Otherwise:
array_walk($array, array($this, 'walkFunction'));

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

这里的array_walk为什么要这样用?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信