Verwenden von Usort in PHP mit einer privaten Klasse-Funktion
ok mit usort Funktion ist nicht so kompliziert
Dies ist, was ich vor hatte, in meinem linearer code
function merchantSort($a,$b){
return ....//stuff;
}
$array = array('..','..','..');
Sortieren habe ich einfach
usort($array,"merchantSort");
Nun sind wir aktualisieren Sie den code und entfernen Sie alle globalen Funktionen und setzen Sie in Ihrem richtigen Platz. Jetzt der gesamte code ist in einer Klasse und ich kann nicht herausfinden, wie die usort-Funktion zum Sortieren der Arrays der parameter ist ein Objekt, Methode, anstatt eine einfache Funktion
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
...
}
}
Die Frage ist, wie rufe ich eine Objekt-Methode innerhalb der usort () - Funktion
InformationsquelleAutor der Frage Ibu | 2011-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen Sie Ihre Funktion Sortieren static:
Und ein array für den zweiten parameter:
InformationsquelleAutor der Antwort Demian Brecht
$value_compare_func
istcallable
array($this, 'merchantSort')
InformationsquelleAutor der Antwort deceze
Müssen Sie gehen
$this
z.B.:usort( $myArray, array( $this, 'mySort' ) );
Vollständigen Beispiel:
InformationsquelleAutor der Antwort Justin
In diesem Beispiel bin ich die Sortierung nach einem Feld innerhalb des array-namens AverageVote.
Man könnte auch die Methode innerhalb der Anruf, das heißt, Sie haben nicht mehr die Klasse scope-problem ist, wie diese...
InformationsquelleAutor der Antwort James K
In Laravel (5.6) Modell Klasse, ich nannte es, wie diese, sind beide Methoden public static mit php 7.2 auf windows 64 bit.
Ich aufgerufen habe, in usortCalledFrom() wie folgt
Keiner diese wurden arbeiten
InformationsquelleAutor der Antwort hrnsky