Search code examples
phparraysobjectcallbackcomparison

How to call method as callback parameter by passing its string name?


I have the following code:

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

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

but it keeps saying that the compare method doesn't exist or is an invalid function name....

I thought I did this right?


Solution

  • A method of an instantiated object is passed as an array containing an object at index 0 and the method name at index 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