Aktueller Standort: Startseite> Neueste Artikel> Wie sortiere ich schwimmende Punktarrays in absteigender Reihenfolge mit RSORT? Was sind die Vorsichtsmaßnahmen?

Wie sortiere ich schwimmende Punktarrays in absteigender Reihenfolge mit RSORT? Was sind die Vorsichtsmaßnahmen?

gitbox 2025-06-17

In PHP kann die RSORT -Funktion verwendet werden, um Arrays in absteigender Reihenfolge zu sortieren. Standardmäßig wird es nach dem Wert des Arrays sortiert und normalerweise zum Anordnen von Zahlen, Zeichenfolgen usw. verwendet, wenn wir schwimmende Punktarrays gegenüberstehen, kann RSORT auch in absteigender Reihenfolge effektiv sortieren. Während der Verwendung gibt es jedoch einige Details und Vorsichtsmaßnahmen, die besondere Aufmerksamkeit erfordern.

1. Grundnutzung der RSORT -Funktion

Die grundlegende Syntax der RSORT -Funktion lautet wie folgt:

 bool rsort(array &$array, int $sort_flags = SORT_REGULAR)
  • $ Array : Das Array, das sortiert werden muss.

  • $ sort_flags : Die allgemeinen Sortiermöglichkeiten sind sort_regular (Standard, in normaler Reihenfolge sortiert) und sort_numeric (sortiert nach numerischer Wert).

2. Verwenden Sie RSORT , um schwimmende Punktarrays in absteigender Reihenfolge zu sortieren

Für schwimmende Punkt -Arrays können wir RSORT direkt verwenden, um sie in absteigender Reihenfolge zu sortieren. Zum Beispiel:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
print_r($numbers);
?>

Ausgangsergebnis:

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
    [3] => 1.73
    [4] => 1.41
)

Wie oben gezeigt, sortiert RSORT die Auswahl der schwimmenden Punktzahlen in absteigender Reihenfolge erfolgreich.

3. Sortieren Sie ein schwimmendes Punktarray mit Sort_Numeric

Obwohl RSORT die schwimmenden Punktzahlen standardmäßig in absteigender Reihenfolge korrekt sortieren kann, können Sie das Sortieren nach numerischer Größe angeben, können Sie das Sort_Numereric -Flag verwenden. Zum Beispiel:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers, SORT_NUMERIC);
print_r($numbers);
?>

Diese Methode besagt eindeutig, dass wir nach der Größe des numerischen Werts sortieren möchten, damit wir einige unvorhergesehene Ergebnisse vermeiden können, insbesondere beim Sortieren von Mischungszahlen und Zeichenfolgen.

4. Wichtige Vorsichtsmaßnahmen

(1) Das Array wird an Ort und Stelle sortiert

RSORT sortiert das übergebene in Array an Ort und Stelle. Das heißt, die Sortierung ändert direkt das ursprüngliche Array, anstatt ein neues Array zurückzugeben. Wenn Sie das ursprüngliche Array nicht ändern möchten, können Sie zuerst das ursprüngliche Array kopieren und dann das kopierte Array sortieren. Zum Beispiel:

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers_copy);
print_r($numbers);       // Originalarray
print_r($numbers_copy);  // Sortieren Sie das Array
?>

(2) Die Genauigkeit der schwimmenden Punktzahlen

Die Darstellung von Gleitkomma-Zahlen ist genau begrenzt, sodass Sie beim Sortieren auf verschiedene Situationen stoßen können. Zum Beispiel:

 <?php
$numbers = array(1.0000000001, 1.0000000002, 1.0000000003);
rsort($numbers);
print_r($numbers);
?>

In einigen Fällen können zwei schwimmende Punktzahlen, die sehr ähnlich aussehen, aufgrund von Präzisionsproblemen in unterschiedlichen Bestellungen sortiert werden. Um dies zu vermeiden, können Sie in Betracht ziehen, die schwimmenden Punktzahlen auf eine bestimmte Präzision zu halten, bevor Sie sie sortieren.

(3) Null- und nicht numerische Elemente

Wenn das Arrays mit schwimmenden Punkten sortiert wird, wird RSORT diese Elemente am Ende des Arrays und der Sortiervorgang möglicherweise beeinträchtigt, wenn das Array Null- oder nicht-numerische Elemente (wie z. B. Zeichenfolgen) enthält. Wenn Sie eine detailliertere Sortierung benötigen, ist es am besten, diese ungültigen Elemente zuerst herauszufiltern.

Zum Beispiel:

 <?php
$numbers = array(3.14, NULL, "string", 4.67, 2.71);
$numbers = array_filter($numbers, 'is_numeric');  // Filtern Sie nicht numerische Elemente heraus
rsort($numbers);
print_r($numbers);
?>

Ausgangsergebnis:

 Array
(
    [0] => 4.67
    [1] => 3.14
    [2] => 2.71
)

(4) Indexierungsprobleme nach der Sortierung

RSORT ordnet den Index des Arrays um und verliert den ursprünglichen Schlüsselnamen. Wenn Sie die ursprünglichen Schlüsselnamen aufbewahren müssen, können Sie Arsort verwenden, um in absteigender Reihenfolge zu sortieren, oder Array_values ​​() verwenden, um das REINDEXED -Array vor dem Sortieren zu erhalten.

 <?php
$numbers = array(3.14, 1.41, 2.71, 4.67, 1.73);
rsort($numbers);
$numbers_with_keys = array_keys($numbers);
print_r($numbers_with_keys);
?>

5. Zusammenfassung

  • RSORT ist eine einfache und benutzerfreundliche Funktion zum Sortieren von Arrays schwimmender Punktzahlen in absteigender Reihenfolge.

  • Standardmäßig kann RSORT die Sortierung von Gleitkomma-Nummern korrekt verarbeiten, und das Sort_Numeric Flag kann verwendet werden, um die Sortierung nach numerischer Wert explizit anzugeben.

  • Achten Sie auf die In-situ-Modifikation des Arrays, die Genauigkeit der schwimmenden Punkte, die nicht numerischen Elemente und Änderungen der Indizes nach der Sortierung.

Wenn Sie diese Details verstehen, können Sie mit RSORT flexibler sein, um schwimmende Punktarrays in absteigender Reihenfolge zu sortieren und sicherzustellen, dass die Sortierergebnisse mit Ihren Erwartungen übereinstimmen.