strcmp

funkcja

Porównuje dwa ciągi znaków binarnie. Zwraca 0 gdy są równe, wartość ujemną gdy pierwszy jest leksykograficznie mniejszy, dodatnią gdy większy.

strcmp(string $string1, string $string2): int

strcmp porównuje dwa ciągi bajt po bajcie, z uwzględnieniem wielkości liter. Wynik to:

  • 0 — ciągi są identyczne,
  • wartość ujemna$string1 jest leksykograficznie mniejszy,
  • wartość dodatnia$string1 jest większy.

Funkcja zwraca surową różnicę bajtów — np. strcmp('z', 'a') zwraca 25. Sprawdzaj tylko znak wyniku (< 0 / 0 / > 0), nigdy konkretną wartość.

<?php
declare(strict_types=1);

echo strcmp('banan', 'ananas'); // wynik: 1, dodatni (b > a)
echo strcmp('alfa', 'beta');    // wynik: -1, ujemny (a < b)
echo strcmp('PHP', 'PHP');      // wynik: 0 (identyczne)
echo strcmp('z', 'a');          // wynik: 25 (surowa różnica bajtów)

// Typowe użycie: bezpieczne porównanie tokenów lub haseł
$token = 'abc123';
if (strcmp($token, $_GET['t'] ?? '') === 0) {
    echo 'Token poprawny.';
}

Pamiętaj, że strcmp rozróżnia wielkość liter — 'PHP' i 'php' to różne ciągi. Jeśli chcesz porównać bez tego rozróżnienia, użyj strcasecmp. Do porównania tylko pierwszych kilku znaków przydaje się strncmp.

📘 Naucz się w lekcji →