ok usar usort com uma função não é tão complicado
Isso é o que eu tinha antes no meu código linear
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
para classificar eu simplesmente faço
usort($array,"merchantSort");
Agora estamos atualizando o código e removendo todas as funções globais e colocando-as em seus lugares apropriados. Agora todo o código está em uma classe e não consigo descobrir como usar a função usort para classificar a matriz com o parâmetro que é um método de objeto em vez de uma função simples
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
...
}
}
A questão é como chamo um método de objeto dentro da função usort ()
$this
(neato).usort($array, 'ClassName:merchantSort')
, não é?'self::merchantSort'
e ela está funcionando.$value_compare_func
écallable
array($this, 'merchantSort')
fonte
Você precisa passar,
$this
por exemplo:usort( $myArray, array( $this, 'mySort' ) );
Exemplo completo:
fonte
Neste exemplo, estou classificando por um campo dentro da matriz chamada AverageVote.
Você poderia incluir o método dentro da chamada, o que significa que você não tem mais o problema de escopo de classe, como este ...
fonte
Na classe de modelo do Laravel (5.6), eu a chamei assim, ambos os métodos são public static, usando php 7.2 em windows 64 bit.
Eu chamei usortCalledFrom () assim
Nenhum desses foi trabalho
fonte
static::
em vez do nome da classe é o que eu precisava, obrigado por mencioná-lo.