ok używanie usort z funkcją nie jest takie skomplikowane
To właśnie miałem wcześniej w moim kodzie liniowym
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
sortować, po prostu robię
usort($array,"merchantSort");
Teraz aktualizujemy kod i usuwamy wszystkie funkcje globalne i umieszczamy je w odpowiednich miejscach. Teraz cały kod jest w klasie i nie mogę dowiedzieć się, jak użyć funkcji usort do sortowania tablicy z parametrem, który jest metodą obiektu zamiast prostej funkcji
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
...
}
}
Pytanie brzmi, jak wywołać metodę obiektu wewnątrz funkcji usort ()
$this
(neato).usort($array, 'ClassName:merchantSort')
, prawda?'self::merchantSort'
i działa.$value_compare_func
tocallable
array($this, 'merchantSort')
źródło
Musisz zdać
$this
np:usort( $myArray, array( $this, 'mySort' ) );
Pełny przykład:
źródło
W tym przykładzie sortuję według pola wewnątrz tablicy o nazwie AverageVote.
Możesz dołączyć metodę do wywołania, co oznacza, że nie masz już problemu z zakresem klasy, na przykład ...
źródło
W klasie modelu Laravel (5.6) nazwałem to w ten sposób, obie metody są public static, używają php 7.2 w systemie Windows 64 bit.
Zadzwoniłem do usortCalledFrom () w ten sposób
Żadne z nich nie działało
źródło
static::
zamiast nazwy klasy jest to, czego potrzebowałem, dzięki za wspomnienie.