2013-01-20 87 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函數。

相關問題