Wha*_*nID 5 php arrays oop callback
我有一个数组,想要MySQLi->real_escape_string通过数组的每个成员,array_walk但这不起作用:
array_walk($array, '$mysqli->real_escape_string');
它给出了这个错误:
警告:array_walk()期望参数2是有效的回调,函数'$ mysqli-> real_escape_string'找不到或在第69行的C:\ wamp\www\ts.tsp中无效的函数名称
$mysqli是一个有效的对象,如果我做$mysqli->real_escape_string('anything')任何其他事情,工作正常.
我的问题:是否无法将对象的函数作为回调传递?或者我做错了什么.
重要提示:我知道我可以创建自己的回调函数并在其中实现$ mysqli-> real_escape_string 但是我想知道是不是可以将回调用作对象的函数?
正如您可以在php回调页面上阅读的那样,您将使用:
# produces an error
array_walk($array, array($msqli, 'real_escape_string'));
array_map($array, array($msqli, 'real_escape_string'));
如果你在一个对象中调用一个方法你应该传入一个数组,第一个项目是对象/上下文,然后第二个应该是方法:
小例子
function callback()
{
   //blah
}
以上称为函数,应该像这样调用: array_walk($array, 'callback');
class object()
{
    public function callback()
    {
    }
}
上面的回调被称为一个方法,它实际上与一个函数相同但是因为它在一个类中它有一个父上下文,所以应该像这样调用:
$object = new object();
array_walk($array, array($object , 'callback'));
MySQLi是一个面向对象的库,因此在初始化了mysqli对象后,你应该像这样调用"方法":
array_walk($array, array($msqli, 'real_escape_string'));
同样如上所述,array_walk将键和值都移动到mysql对象中将导致完全转义,您应该使用array_map单独遍历值:
array_map($array, array($msqli, 'real_escape_string'));