Aktueller Standort: Startseite> Neueste Artikel> Wie verwendet ich Arsort in Kombination mit Array_Map, um den besten Weg zum Sortieren komplexer Daten zu erreichen?

Wie verwendet ich Arsort in Kombination mit Array_Map, um den besten Weg zum Sortieren komplexer Daten zu erreichen?

gitbox 2025-08-26

Wie verwendet ich Arsort in Kombination mit Array_Map, um den besten Weg zum Sortieren komplexer Daten zu erreichen?

In PHP sind Arsort und Array_Map zwei sehr nützliche Funktionen. Ersteres wird verwendet, um Arrays in absteigender Reihenfolge nach Wert zu sortieren, während letzteres verwendet werden kann, um jedes Element im Array anzupassen. Diese beiden Funktionen können kombiniert werden, um die Sortierung komplexer Daten zu erreichen, insbesondere wenn es sich um mehrdimensionale Arrays handelt oder um Daten basierend auf bestimmten Bedingungen zu sortieren, die leistungsstarke Anwendungsszenarien aufweisen.

In diesem Artikel wird erläutert, wie Arsort und Array_MAP verwendet werden, um den besten Weg zu erreichen, um komplexe Daten zu sortieren, und jedem zu helfen, dies durch praktische Beispiele besser zu verstehen.

1. grundlegende Einführung

  • ARSORT : Arsort wird verwendet, um Arrays in absteigender Reihenfolge nach Wert zu sortieren und die Indexbeziehung unverändert zu halten. Wenn der Wert des Arrays numerisch ist, sortiert Arsort das Array nach Größe, und wenn der Wert eine Zeichenfolge ist, wird es in Wörterbuchreihenfolge sortiert.

  • Array_Map : Array_Map ermöglicht es uns, eine Rückruffunktion auf jedes Element im Array anzuwenden und so ein neues Array zurückzugeben. Verwenden Sie vor dem Sortieren Array_MAP , um Daten in die Elemente des Arrays zu konvertieren, formatieren oder zu extrahieren, um die Sortieranforderungen zu erfüllen.

2. Beispielanwendungsszenarien

Angenommen, wir haben ein mehrdimensionales Array, das die Namen und Noten der Schüler speichert, die wir nach Noten sortieren wollen.

 <span><span><span class="hljs-variable">$students</span></span><span> = [
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Bob"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">75</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Charlie"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"David"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">95</span></span><span>]
];
</span></span>

Wir wollen diese Schüler in absteigender Reihenfolge nach Punktzahl sortieren.

3.. Verwenden Sie Array_Map und Arsort, um Sortierung zu implementieren

Verwenden Sie zuerst Array_Map , um die Punktzahl ( Punktzahl ) zu extrahieren, die Bewertungen in absteigender Reihenfolge mit Arsort zu sortieren und schließlich das Array der Schüler gemäß den sortierten Punktzahlen neu zu ordnen.

 <span><span><span class="hljs-comment">// Schülerergebnisse extrahieren</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);

</span><span><span class="hljs-comment">// Sortieren Sie die Ergebnisse in absteigender Reihenfolge</span></span><span>
</span><span><span class="hljs-title function_ invoke__">arsort</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>);

</span><span><span class="hljs-comment">// Ordnen Sie das Student -Array anhand sortierter Noten neu an</span></span><span>
</span><span><span class="hljs-variable">$sorted_students</span></span><span> = [];
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$scores</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$index</span></span><span> =&gt; </span><span><span class="hljs-variable">$score</span></span><span>) {
    </span><span><span class="hljs-variable">$sorted_students</span></span><span>[] = </span><span><span class="hljs-variable">$students</span></span><span>[</span><span><span class="hljs-variable">$index</span></span><span>];
}

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$sorted_students</span></span><span>);
</span></span>

4. Code Parsen

  1. Array_MAP : Wir verwenden Array_Map , um eine anonyme Funktion in jedem Element (pro Schüler) im $ studentary -Array auszuführen, das die Noten des Schülers zurückgibt. Schließlich erhalten wir eine Reihe von US -Dollar , die nur Noten enthalten.

  2. ARSORT : Verwenden Sie Arsort , um das Score -Array in absteigender Reihenfolge zu sortieren, um sicherzustellen, dass die Schüler mit hohen Noten im Vordergrund stehen.

  3. Um ordnen Sie das Student -Array neu an : Arsort wird ein Array zurückgeben, das nach Noten sortiert ist, aber wir müssen das ursprüngliche Studentenarray nach dem sortierten Index auch neu ordnen. Hier wird eine Foreach -Schleife verwendet, um die Elemente in der Student -Array $ $ student nach dem sortierten Note -Index nach Abfolge zu entfernen und ein neues sortiertes Student -Array $ sorted_students zu bilden.

5. komplexere Situationen

Angenommen, wir müssen nach mehreren Kriterien sortieren, z. B. zuerst nach Sortieren nach Klassen, und wenn die Noten gleich sind und nach alphabetischer Reihenfolge des Namens sortieren. Zu diesem Zeitpunkt können wir Array_Map verwenden, um diese Bedingungen zu verarbeiten und dann Array und Array_Multisort zu kombinieren, um die komplexe Sortierung zu vervollständigen.

 <span><span><span class="hljs-variable">$students</span></span><span> = [
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Alice"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Bob"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">75</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"Charlie"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">90</span></span><span>],
    [</span><span><span class="hljs-string">"name"</span></span><span> =&gt; </span><span><span class="hljs-string">"David"</span></span><span>, </span><span><span class="hljs-string">"score"</span></span><span> =&gt; </span><span><span class="hljs-number">85</span></span><span>]
];

</span><span><span class="hljs-comment">// Extrahieren Sie Bewertungen und Namen</span></span><span>
</span><span><span class="hljs-variable">$scores</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'score'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);

</span><span><span class="hljs-variable">$names</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$student</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$student</span></span><span>[</span><span><span class="hljs-string">'name'</span></span><span>];
}, </span><span><span class="hljs-variable">$students</span></span><span>);

</span><span><span class="hljs-comment">// Sortieren Sie durch absteigende Reihenfolge der Noten,Sortieren Sie durch aufsteigender Reihenfolge</span></span><span>
</span><span><span class="hljs-title function_ invoke__">array_multisort</span></span><span>(</span><span><span class="hljs-variable">$scores</span></span><span>, SORT_DESC, </span><span><span class="hljs-variable">$names</span></span><span>, SORT_ASC, </span><span><span class="hljs-variable">$students</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$students</span></span><span>);
</span></span>

In diesem Beispiel verwenden wir Array_Multisort , mit der wir die Daten basierend auf mehreren Arrays sortieren können. Sortieren Sie zunächst in absteigender Reihenfolge in der Punktzahl , und wenn die Noten gleich sind, sortieren Sie in dem Namen in aufsteigender Reihenfolge.

6. Zusammenfassung

Die Kombination von Arsort und Array_Map bietet leistungsstarke Funktionen für komplexe Datensortierungen. Wir können Daten über Array_Map verarbeiten oder Schlüsselfelder extrahieren, bevor wir sortieren, und dann in absteigender Reihenfolge durch Array_Multisort und sogar eine multi-konditionelle Sortierung in Kombination mit Array_Multisort sortieren.

Indem wir diese Funktionen flexibel verwenden, können wir bei der Verarbeitung mehrdimensionaler Arrays und komplexer Daten effizienter und bequemer sortieren und die Lesbarkeit und Ausführungseffizienz des Codes verbessern.