Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么这个回调函数不起作用?_Php_Arrays_Object_Callback_Comparison - Fatal编程技术网

Php 为什么这个回调函数不起作用?

Php 为什么这个回调函数不起作用?,php,arrays,object,callback,comparison,Php,Arrays,Object,Callback,Comparison,我有以下代码: public function compareObjects($object1, $object2){ return $object1->id - $objects2->id } $diff = array_udiff($array1, $array2, 'compareObjects'); 但是它一直说compare方法不存在或者是无效的函数名 我认为我做得对吗?它是在寻找纯函数,而不是类方法。您需要像调用类方法一样使用$this 你需要这样做 $dif

我有以下代码:

public function compareObjects($object1, $object2){
    return $object1->id - $objects2->id
}

$diff = array_udiff($array1, $array2, 'compareObjects');
但是它一直说compare方法不存在或者是无效的函数名


我认为我做得对吗?

它是在寻找纯函数,而不是类方法。您需要像调用类方法一样使用
$this

你需要这样做

$diff = array_udiff($array1, $array2, array($this, 'compareObjects'));
同样地,如果你在课堂之外使用它,你需要像这样使用它

$objRandom = new Whatever;
// do some fancy PHP stuff, or not
$diff = array_udiff($array1, $array2, array($objRandom, 'compareObjects'));

这就是如何将任何PHP函数与回调函数/方法结合使用。

它寻找的是纯函数,而不是类方法。您需要像调用类方法一样使用
$this

你需要这样做

$diff = array_udiff($array1, $array2, array($this, 'compareObjects'));
同样地,如果你在课堂之外使用它,你需要像这样使用它

$objRandom = new Whatever;
// do some fancy PHP stuff, or not
$diff = array_udiff($array1, $array2, array($objRandom, 'compareObjects'));

这就是如何将任何PHP函数与回调函数/方法一起使用。

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

// Functions
$diff = array_udiff($array1, $array2, 'compareObjects');

// Object methods 
$diff = array_udiff($array1, $array2, array($this, 'compareObjects'));
// -OR-
$diff = array_udiff($array1, $array2, array($my_obj, 'compareObjects'));


// Static class methods
$diff = array_udiff($array1, $array2, 'some_class::compareObjects'); // PHP 5.2.3+

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

// Functions
$diff = array_udiff($array1, $array2, 'compareObjects');

// Object methods 
$diff = array_udiff($array1, $array2, array($this, 'compareObjects'));
// -OR-
$diff = array_udiff($array1, $array2, array($my_obj, 'compareObjects'));


// Static class methods
$diff = array_udiff($array1, $array2, 'some_class::compareObjects'); // PHP 5.2.3+