Php 在数组\过滤器中传递数组而不是回调

Php 在数组\过滤器中传递数组而不是回调,php,Php,我正在看这个例子,他将一个参数作为 array_filter($subject, array(new array_ereg("image[0-9]{3}\.png"), 'ereg') 回调函数如何接受具有多个参数的数组?其中一个参数是实际的回调函数。在PHP中,可以使用以下格式的数组表示回调函数 array($object,'methodName') 文件本身指出: 实例化对象的方法作为数组传递,数组包含索引0处的对象和索引1处的方法名称 很常见的情况是,它与对象中的$this变量一起使用

我正在看这个例子,他将一个参数作为

array_filter($subject, array(new array_ereg("image[0-9]{3}\.png"), 'ereg')

回调函数如何接受具有多个参数的数组?其中一个参数是实际的回调函数。在PHP中,可以使用以下格式的数组表示回调函数

array($object,'methodName')

文件本身指出:

实例化对象的方法作为数组传递,数组包含索引0处的对象和索引1处的方法名称

很常见的情况是,它与对象中的
$this
变量一起使用

在您的示例中,数组的第一个元素是使用
new
创建的,它是所需的实例化对象,而
ereg
是方法。

函数的第二个参数需要一个。
PHP将
数组($instance,'methodname')
理解为可调用的实例方法,将
数组('classname','staticmethodname')
理解为可调用的静态方法(或自5.2.3版起的简单
'classname::staticmethod'
),以扩展其他答案。在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.
请看一下这一页

为可调用的参数指定数组时,您指定的是该对象的对象和方法。例如:

$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类的方法。

另外,
ereg
函数不推荐使用,您应该避免使用它们。