ok usar usort con una función no es tan complicado
Esto es lo que tenía antes en mi código lineal.
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
para ordenar simplemente lo hago
usort($array,"merchantSort");
Ahora estamos actualizando el código y eliminando todas las funciones globales y colocándolas en su lugar apropiado. Ahora todo el código está en una clase y no puedo entender cómo usar la función usort para ordenar la matriz con el parámetro que es un método de objeto en lugar de una función simple
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
...
}
}
La pregunta es cómo llamo a un método de objeto dentro de la función usort ()
$this
(neato).usort($array, 'ClassName:merchantSort')
, ¿no?'self::merchantSort'
y está funcionando.$value_compare_func
escallable
array($this, 'merchantSort')
fuente
Necesita pasar,
$this
por ejemplo:usort( $myArray, array( $this, 'mySort' ) );
Ejemplo completo:
fuente
En este ejemplo, estoy ordenando por un campo dentro de la matriz llamado AverageVote.
Podría incluir el método dentro de la llamada, lo que significa que ya no tiene el problema del alcance de la clase, como este ...
fuente
En la clase de modelo Laravel (5.6), lo llamé así, ambos métodos son estáticos públicos, usando php 7.2 en Windows de 64 bits.
Llamé a usortCalledFrom () así
Ninguno de estos fue trabajo
fuente
static::
en lugar del nombre de la clase es lo que necesitaba, gracias por mencionarlo.