ok usort mit einer funktion zu benutzen ist nicht so kompliziert
Das hatte ich vorher in meinem linearen Code
function merchantSort($a,$b){
return ....// stuff;
}
$array = array('..','..','..');
zu sortieren mache ich einfach
usort($array,"merchantSort");
Jetzt aktualisieren wir den Code, entfernen alle globalen Funktionen und platzieren sie an der richtigen Stelle. Jetzt ist der gesamte Code in einer Klasse und ich kann nicht herausfinden, wie die usort-Funktion verwendet wird, um das Array mit dem Parameter zu sortieren, der eine Objektmethode anstelle einer einfachen Funktion ist
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 ich eine Objektmethode innerhalb der Funktion usort () aufrufe
$this
(ordentlich).usort($array, 'ClassName:merchantSort')
, nicht wahr?'self::merchantSort'
und sie funktioniert.$value_compare_func
istcallable
array($this, 'merchantSort')
quelle
Sie müssen
$this
zB bestehen:usort( $myArray, array( $this, 'mySort' ) );
Vollständiges Beispiel:
quelle
In diesem Beispiel sortiere ich nach einem Feld innerhalb des Arrays namens AverageVote.
Sie können die Methode in den Aufruf aufnehmen, was bedeutet, dass Sie das Klassenbereichsproblem wie folgt nicht mehr haben ...
quelle
In der Modellklasse Laravel (5.6) habe ich es so genannt. Beide Methoden sind öffentlich statisch und verwenden PHP 7.2 unter Windows 64 Bit.
Ich habe usortCalledFrom () so aufgerufen
Nichts davon war Arbeit
quelle
static::
Anstelle des Klassennamens brauchte ich, danke, dass ich ihn erwähnt habe.