In PHP wird die Funktion rsort () normalerweise verwendet, um Arrays in absteigender Reihenfolge zu sortieren, aber standardmäßig sortiert sie nach dem Wert von Array -Elementen. Wenn wir die Arrays nach der Länge der Zeichenfolge sortieren möchten, kann RSORT () diese Anforderung nicht direkt implementieren. Um das Array nach String -Länge zu sortieren, können wir usort () und eine benutzerdefinierte Vergleichsfunktion verwenden oder die Länge der Zeichenfolge vor dem Sortieren berechnen und verarbeiten.
In diesem Artikel wird die Sortierung von Arrays nach Stringlänge mit RSORT () vorgestellt und Code -Beispiele und -erklärungen angeben.
Das erste, was zu verstehen ist, ist, dass RSORT () nicht direkt basierend auf der Länge der Zeichenfolge sortiert werden kann und sie basierend auf den Werten von Array -Elementen sortiert wird. Wir müssen also usort () verwenden, um die Sortierung nach Stringlänge zu erreichen.
Usort () selbst sortiert jedoch die Anordnung des Arrays aufsteigend. Wir können eine Vergleichsfunktion anpassen, die nach der Länge der Zeichenfolge verglichen wird, wodurch die Sortierung nach Länge erreicht wird. Wir können auch die Sortiermethode festlegen, um abzusteigen, um ähnliche Effekte wie RSORT () zu erzielen.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Beispielarray</span></span><span>
</span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">"apple"</span></span><span>, </span><span><span class="hljs-string">"banana"</span></span><span>, </span><span><span class="hljs-string">"kiwi"</span></span><span>, </span><span><span class="hljs-string">"grapes"</span></span><span>, </span><span><span class="hljs-string">"strawberry"</span></span><span>];
</span><span><span class="hljs-comment">// Benutzerdefinierte Vergleichsfunktionen,Sortieren Sie nach Stringlänge</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compareByLength</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$a</span></span></span><span>, </span><span><span class="hljs-variable">$b</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$b</span></span><span>) - </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$a</span></span><span>); </span><span><span class="hljs-comment">// In absteigender Reihenfolge sortieren</span></span><span>
}
</span><span><span class="hljs-comment">// verwenden usort 和Benutzerdefinierte Vergleichsfunktionen排序</span></span><span>
</span><span><span class="hljs-title function_ invoke__">usort</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>, </span><span><span class="hljs-string">'compareByLength'</span></span><span>);
</span><span><span class="hljs-comment">// Ausgabe sortiertes Array</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$array</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>Definieren eines Arrays : Zuerst definieren wir ein Array $ $ -Scharn , das verschiedene Fruchtnamen enthält, die Zeichenfolgen unterschiedlicher Längen enthält.
Benutzerdefinierte Vergleichsfunktion : ComparyByLength () ist eine benutzerdefinierte Vergleichsfunktion, mit der die Längen von zwei Zeichenfolgen verglichen werden. Hier verwenden wir Strlen ($ B) - Strlen ($ A), um eine absteigende Reihenfolge der Länge zu erreichen. Die Funktion strlen () gibt die Länge der Zeichenfolge zurück. $ B und $ A sind zwei Saiten, die jeweils verglichen werden müssen. Wenn der Rückgabewert eine positive Zahl ist, bedeutet dies, dass die Länge von $ B größer als $ A ist und umgekehrt.
Sortieren Sie Array : Die Usort () -Funktion wird verwendet, um das Array zu sortieren, und die Bestellregeln werden durch die Vergleichsfunktion bestimmt, in der wir übergeben wurden.
Ausgabe -Sortierungsergebnis : Verwenden Sie schließlich print_r () , um das sortierte Array auszugeben, und die Ergebnisse werden von lang bis kurz nach Stringlänge angeordnet.
Nach der Ausführung des obigen Codes ist die Ausgabe:
<span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
[</span><span><span class="hljs-number">0</span></span><span>] => strawberry
[</span><span><span class="hljs-number">1</span></span><span>] => banana
[</span><span><span class="hljs-number">2</span></span><span>] => grapes
[</span><span><span class="hljs-number">3</span></span><span>] => apple
[</span><span><span class="hljs-number">4</span></span><span>] => kiwi
)
</span></span>Wie Sie sehen können, stehen Elemente mit langen Saitenlängen vor.
Obwohl RSORT () selbst nicht direkt nach Stringlänge sortiert werden kann, können wir diese Anforderung durch benutzerdefinierte Vergleichsfunktionen und usort () erfüllen. Berechnen Sie die Länge der Zeichenfolge, indem Sie Strlen () in der Funktion vergleichen, um das Array nach Länge zu sortieren. Diese Methode behält nicht nur die absteigende Reihenfolge von RSORT () bei, sondern sortiert auch Array -Elemente flexibel nach Bedarf.
Ich hoffe, diese Methode kann Ihnen helfen, Arrays in PHP besser zu manipulieren!