gmp_cmp
funkcja
Porównuje dwie dowolnie duże liczby całkowite GMP; zwraca int: >0, 0 lub <0.
gmp_cmp(GMP|int|string $num1, GMP|int|string $num2): int
gmp_cmp porównuje $num1 z $num2 i zwraca zwykłe PHP int: liczbę dodatnią gdy $num1 > $num2, 0 gdy są równe, liczbę ujemną gdy $num1 < $num2. Wzorzec jest identyczny jak w strcmp() czy spaceship operator (<=>). Nie należy używać == lub > bezpośrednio na obiektach GMP — porównywałoby referencje, nie wartości.
<?php
declare(strict_types=1);
echo gmp_cmp(10, 5); // wynik: 1 (10 > 5)
echo gmp_cmp(5, 10); // wynik: -1 (5 < 10)
echo gmp_cmp(5, 5); // wynik: 0 (równe)
// Sortowanie tablicy dużych liczb GMP
$liczby = [gmp_init('999999999999999999'), gmp_init('1'), gmp_init('500000000000000000')];
usort($liczby, 'gmp_cmp');
foreach ($liczby as $l) {
echo gmp_strval($l) . PHP_EOL;
}
// wynik: 1 / 500000000000000000 / 999999999999999999
Argumenty mogą być obiektami GMP, liczbami int lub ciągami znaków. Funkcja jest bezpieczna do użycia jako callback w usort() i uasort().