хорошо, использовать usort с функцией не так сложно
Это то, что у меня было раньше в моем линейном коде
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
для сортировки я просто делаю
usort($array,"merchantSort");
Сейчас мы обновляем код, удаляем все глобальные функции и помещаем их на соответствующие места. Теперь весь код находится в классе, и я не могу понять, как использовать функцию usort для сортировки массива с параметром, который является методом объекта, а не простой функцией.
class ClassName {
...
private function merchantSort($a,$b) {
return ...// the sort
}
public function doSomeWork() {
...
$array = $this->someThingThatReturnAnArray();
usort($array,'$this->merchantSort'); // ??? this is the part i can't figure out
...
}
}
Вопрос в том, как вызвать метод объекта внутри функции usort ().
$this
(аккуратно).usort($array, 'ClassName:merchantSort')
, не так ли?'self::merchantSort'
и она работает.$value_compare_func
являетсяcallable
array($this, 'merchantSort')
источник
Вам нужно пройти,
$this
например:usort( $myArray, array( $this, 'mySort' ) );
Полный пример:
источник
В этом примере я сортирую по полю внутри массива под названием AverageVote.
Вы можете включить метод в вызов, что означает, что у вас больше нет проблемы с областью класса, например ...
источник
В классе модели Laravel (5.6) я назвал его так, оба метода являются общедоступными статическими, с использованием php 7.2 на 64-разрядной версии Windows.
Я позвонил в usortCalledFrom () вот так
Ни один из них не работал
источник
static::
вместо имени класса это то, что мне нужно, спасибо за упоминание.