私は次のコードを持っています:
public function compareObjects($object1, $object2){
return $object1->id - $objects2->id
}
$diff = array_udiff($array1, $array2, 'compareObjects');
しかし、compareメソッドが存在しないか、無効な関数名であると言い続けています。
私はこれを正しくやったと思いましたか?
私は次のコードを持っています:
public function compareObjects($object1, $object2){
return $object1->id - $objects2->id
}
$diff = array_udiff($array1, $array2, 'compareObjects');
しかし、compareメソッドが存在しないか、無効な関数名であると言い続けています。
私はこれを正しくやったと思いましたか?
インスタンス化されたオブジェクトのメソッドは、インデックス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+
クラスメソッドではなく、純粋関数を探しています。$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関数を使用する方法とほぼ同じです。