我正在查看此示例array_filter comment并将参数传递给array_filter
array_filter($subject, array(new array_ereg("image[0-9]{3}\.png"), 'ereg')
回调如何接受具有多个参数的数组,其中一个参数是实际的回调函数
答案 0 :(得分:1)
在PHP中,可以使用以下格式的数组来表示callable
。
array($object, 'methodName')
文档本身说明:
实例化对象的方法作为数组传递,该数组包含索引为0的对象和索引为1的方法名称。
很常见的是,这与对象内的$this
变量一起使用。
在您的示例中,数组的第一个元素是使用new
创建的,并且是所需的实例化对象,ereg
是方法。
答案 1 :(得分:1)
array_filter函数需要callable作为第二个参数。
PHP将array($instance, 'methodname')
理解为实例方法可调用,并将静态方法array('classname', 'staticmethodname')
理解为自版本5.2.3以来的简单'classname::staticmethod'
。
答案 2 :(得分:0)
扩展其他答案。在PHP> = 5.3中,我们可以使用闭包。
$numbers = range(1,10);
$newNumbers = array_filter($numbers, function($value) {
return ($value & 1) === false;
});
// $newNumbers now contains only even integers. 2, 4, 6, 8, 10.
答案 3 :(得分:0)
查看PHP: Callbacks页面。
为可调用参数指定数组时,您指定该对象的对象和方法。例如:
$object = new MyClass();
array_filter($input, array($object, 'myClassMethod'));
在您提供的示例中:
array_filter($subject, array(new array_ereg("image[0-9]{3}\.png"), 'ereg');
array_ereg 的新实例是对象, ereg 是array_ereg类的方法。< / p>