Aktueller Standort: Startseite> Neueste Artikel> Was bedeutet es, positive und negative Werte in PHP zurückzugeben? Wie kann man mit diesen Ergebnissen korrekt umgehen?

Was bedeutet es, positive und negative Werte in PHP zurückzugeben? Wie kann man mit diesen Ergebnissen korrekt umgehen?

gitbox 2025-08-17

In PHP ist die STRNATCMP -Funktion ein Werkzeug zum Vergleich der natürlichen Ordnung (natürliche Sorte) von zwei Saiten. Es unterscheidet sich von regulären String -Vergleichsfunktionen wie STRCMP , da Strnatcmp nicht nur nach dem ASCII -Wert des Zeichens sortiert. Für Entwickler ist es sehr wichtig zu verstehen, wie die positiven und negativen Werte, die durch diese Funktion zurückgeführt werden, und wie diese Ergebnisse korrekt behandelt werden.

Was ist die STRNATCMP -Funktion?

Der Prototyp der STRNATCMP -Funktion lautet wie folgt:

 <span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str1</span></span><span> , </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$str2</span></span><span> )
</span></span>

Diese Funktion nimmt zwei String -Parameter $ str1 und $ str2 ein und gibt einen Ganzzahlwert zurück, der das natürliche Auftragsvergleichsergebnis der beiden Zeichenfolgen darstellt.

  • Wenn $ str1 weniger als $ str2 ist, wird ein negativer Wert zurückgegeben.

  • Wenn $ str1 gleich $ str2 ist, return 0;

  • Wenn $ str1 größer als $ str2 ist, wird ein positiver Wert zurückgegeben.

Wie kann man den positiven und negativen Renditewert verstehen?

  1. Negativer Wert zurückgeben:
    Wenn Strnatcmp einen negativen Wert zurückgibt, bedeutet dies, dass der erste String $ str1 vor dem zweiten String $ str2 in natürlicher Sortierung eingestuft wird. Zum Beispiel:

     <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabe negativer Wert</span></span><span>
    </span></span>

    In diesem Beispiel wird "Apple10" auf natürliche Weise vor "Apple2" sortiert, da die Zahl 10 größer als die Zahl 2 ist.

  2. Rückkehr 0:
    Wenn die beiden Saiten in der natürlichen Sortierung gleich sind, kehrt Strnatcmp 0 zurück. Zum Beispiel:

     <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabe0</span></span><span>
    </span></span>

    Hier sind die beiden Saiten genau gleich, also kehren Sie 0 zurück.

  3. Gibt den positiven Wert zurück:
    Wenn StrnatCMP einen positiven Wert zurückgibt, bedeutet dies, dass der erste String $ str1 nach dem zweiten String $ str2 in natürlicher Sortierung eingestuft wird. Zum Beispiel:

     <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>);  </span><span><span class="hljs-comment">// Ausgabe正值</span></span><span>
    </span></span>

    In diesem Beispiel wird "Apple20" nach "Apple2" in natürlicher Art eingestuft, da die Zahl 20 größer als die Zahl 2 ist.

Wie kann ich den Rückgabewert von strnatcmp richtig umgehen?

  1. Einfacher Vergleich:
    Wenn Sie nur feststellen möchten, welche der beiden Zeichenfolgen größer ist, können Sie den Rückgabewert direkt verwenden. Zum Beispiel:

     <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-variable">$str1</span></span><span>, </span><span><span class="hljs-variable">$str2</span></span><span>);
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> &lt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> Rang in </span><span><span class="hljs-subst">$str2</span></span><span> Front";
    } </span><span><span class="hljs-keyword">elseif</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> Rang in </span><span><span class="hljs-subst">$str2</span></span><span> später";
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$str1</span></span></span><span> Und </span><span><span class="hljs-subst">$str2</span></span><span> Dasselbe";
    }
    </span></span>

    Diese Verarbeitungsmethode eignet sich für Szenarien, in denen Sortieren oder Vergleich erforderlich sind.

  2. Verwendung bei der Sortierung:
    STRNATCMP wird häufig für die natürliche Sortierung von Arrays verwendet, insbesondere wenn es sich um Zeichenfolgen handelt, die Zahlen enthalten. Wenn Sie die Arrays in natürlicher Reihenfolge sortieren möchten, können Sie die Usort -Funktion in Verbindung mit strnatcmp verwenden:

     <span><span><span class="hljs-variable">$array</span></span><span> = [</span><span><span class="hljs-string">"apple10"</span></span><span>, </span><span><span class="hljs-string">"apple2"</span></span><span>, </span><span><span class="hljs-string">"apple20"</span></span><span>, </span><span><span class="hljs-string">"apple1"</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">'strnatcmp'</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>

    Dies wird ausgeben:

     <span><span>Array
    (
        [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; apple1
        [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; apple2
        [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; apple10
        [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; apple20
    )
    </span></span>
  3. Umgang mit komplexen Situationen:
    Manchmal müssen wir komplexere Zeichenfolgen vergleichen, wie die Zeichenfolge, die Daten, Versionsnummern usw. enthält.

     <span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strnatcmp</span></span><span>(</span><span><span class="hljs-string">"version 10.1"</span></span><span>, </span><span><span class="hljs-string">"version 9.9"</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span> &gt; </span><span><span class="hljs-number">0</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"version 10.1 Vergleichen version 9.9 erneuern"</span></span><span>;
    }
    </span></span>

    Die Ausgabe ist: Version 10.1 wird aktualisiert als Version 9.9 , was zeigt, dass Strnatcmp die Versionsnummern in natürlicher Reihenfolge korrekt behandelt.

Zusammenfassen

STRNATCMP ist eine sehr nützliche PHP -Funktion, die Strings durch natürliche Sortierregeln vergleicht, insbesondere wenn es sich um Strings mit Zahlen handelt, die eine intuitivere Sortiermethode bieten können. Das Verständnis der positiven und negativen Bedeutungen von Renditewerten und der korrekten Umgang mit ihnen kann den Entwicklern helfen, einen String -Vergleich und die Sortiervorgänge effizienter durchzuführen.