2013-01-20 58 views
0

我有以下代码:这个回调函数为什么不起作用?

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

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

但它口口声声说比较方法不存在或者是无效的函数名....

我想我这样做对吗?

回答

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+ 

PHP: Callbacks

阵列传递
0

它正在寻找一个纯函数,而不是类方法。您需要使用$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函数。

相关问题