Aktueller Standort: Startseite> Neueste Artikel> Strnatcasecmp gegen Strcoll: Welches eignet sich besser für die natürliche Sortierung von Saiten?

Strnatcasecmp gegen Strcoll: Welches eignet sich besser für die natürliche Sortierung von Saiten?

gitbox 2025-05-19

In PHP müssen wir oft Sortierungen sortieren oder vergleichen. Im natürlichen Sortierszenario sind Strnatcasecmp und StrColl zwei häufig verwendete String -Vergleichsfunktionen. Obwohl beide zum Vergleich von Saiten verwendet werden, unterscheiden sie sich in ihrer Verarbeitung etwas anders. Heute werden wir einen detaillierten Vergleich dieser beiden Funktionen durchführen, damit Sie die richtige Funktion auswählen können, um die Anforderungen der natürlichen Stringsortierung zu erfüllen.

1. Funktion Einführung

  • strnatcasecmp :

    • StrnatCasecmp ist eine Funktion in PHP, die zwei Zeichenfolgen auf "natürliche Sorte" vergleicht. Die sogenannte "natürliche Sortierung" bedeutet, dass die Zahlen in einer Zeichenfolge als Zahlen behandelt werden, nicht nur als Zeichen. Die Vergleichsmethode ignoriert den Fall, so dass der Fall im Briefvergleich keinen Einfluss auf die Sortierung hat.

    • Grammatik:

       int strnatcasecmp ( string $str1 , string $str2 )
      
    • Rückgabewert:

      • Wenn $ str1 weniger als $ str2 ist, wird eine negative Zahl zurückgegeben.

      • Wenn $ str1 gleich $ str2 ist, kehren Sie 0 zurück.

      • Wenn $ str1 größer als $ str2 ist, wird eine positive Zahl zurückgegeben.

    • Beispiel:

       $str1 = "file10";
      $str2 = "file2";
      echo strnatcasecmp($str1, $str2);  // Negative Ausgabe,Weil "file10" Ranking in natürlicher Reihenfolge "file2" Front
      
  • Strcoll :

    • StrColl vergleicht zwei Zeichenfolgen auf der aktuellen Gebietsschema. Es verwendet lokalisierte Regeln für String -Vergleiche, sodass die Ergebnisse je nach verschiedenen Orten variieren können. Es eignet sich zum Sortieren von Szenarien, die Sprach- und Kulturunterschiede berücksichtigen müssen.

    • Grammatik:

       int strcoll ( string $str1 , string $str2 )
      
    • Rückgabewert:

      • Wenn $ str1 weniger als $ str2 ist, wird eine negative Zahl zurückgegeben.

      • Wenn $ str1 gleich $ str2 ist, kehren Sie 0 zurück.

      • Wenn $ str1 größer als $ str2 ist, wird eine positive Zahl zurückgegeben.

    • Beispiel:

       setlocale(LC_COLLATE, 'en_US.UTF-8');  // Einrichten des Bereichs
      $str1 = "apple";
      $str2 = "banana";
      echo strcoll($str1, $str2);  // Negative Ausgabe,Weil "apple" Alphabetische Ordnung "banana" Front
      

2. Vergleich zwischen Strnatcasecmp und Strcoll

  • sortieren durch :

    • StrnatCasecmp verwendet die "natürliche Sortier" -Methode, und Zahlen werden als Zahlen zum Sortieren und zur Ignorierung des oberen und unteren Falls behandelt.

    • StrColl vergleicht Zeichenfolgen auf der Grundlage der Gebietsschemaeinstellungen des Systems, und die Sortierregeln hängen von verschiedenen Sprachen und kulturellen Gewohnheiten ab.

  • Szenarien verwenden :

    • Wenn Sie natürliche Sortierung durchführen möchten, insbesondere beim Vergleich von Zeichenfolgen, die Zahlen enthalten, ist Strnatcasecmp angemessener. Wenn Sie beispielsweise Dateinamen vergleichen möchten, sollten Zeichenfolgen wie "Datei1" und "File10" in natürlicher Reihenfolge sortiert werden, dann ist StrnatCasecmp eine bessere Wahl.

    • Wenn Sie Strings mit dem Gebietsschema vergleichen müssen, insbesondere wenn Sie mit mehrsprachigen Inhalten zu tun haben, ist StrColl eine geeignetere Funktion. Zum Beispiel ist Strcoll flexibler, wenn Sie möchten, dass Saiten nach Ort (wie Englisch oder Französisch) sortiert werden.

  • Leistungsunterschiede :

    • StrnatCasecmp kann beim natürlichen Sortieren etwas langsamer zu verarbeiten sein, da es an Parsen in der Zeichenfolge analysiert werden muss.

    • Strcoll sortiert nach dem aktuellen Gebietsschema, sodass die Leistung durch das Gebietsschema beeinflusst wird, aber normalerweise ist sie effizienter.

3. Code -Beispiel: Natürliche Sorte gegen Gebietsschema Sortierung

 // verwenden strnatcasecmp Natürliche Sortierung machen
$file1 = "file10";
$file2 = "file2";
echo strnatcasecmp($file1, $file2);  // Negative Ausgabe,file10 existieren file2 Vor

// verwenden strcoll Sortieren des Gebietsschemaseinstellungen
setlocale(LC_COLLATE, 'en_US.UTF-8');
echo strcoll("apple", "banana");  // Negative Ausgabe,Weil apple 排existieren banana Front

4. Schlussfolgerung

Bei der Sortierung von Zeichenfolgen ist Strnatcasecmp eine geeignetere Wahl, wenn Sie Strings in "natürlicher Reihenfolge" vergleichen müssen, insbesondere wenn die Zeichenfolge Zahlen enthält. Es kann die Bedürfnisse der numerischen Sortierung besser verstehen. Auf der anderen Seite eignet sich StrColl besser für Szenarien, in denen Sie nach Sprachgebiet sortieren müssen, insbesondere wenn Sie mehrere Sprachen sortieren müssen.

Die ausgewählte Funktion hängt daher von Ihren tatsächlichen Bedürfnissen ab. StrColl ist möglicherweise besser, wenn Sie Cross-Sprach-String-Sortieren durchführen möchten. StrnatCasecmp ist eher anwendbar, wenn Sie sich nur für die natürliche Sortierung interessieren, insbesondere wenn Zahlen sortieren.