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 —
$string1jest leksykograficznie mniejszy, - wartość dodatnia —
$string1jest 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.