LonghornPHP 2026

gmp_cmp

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

gmp_cmpСравнивает числа

Описание

function gmp_cmp(GMP |int |string $num1, GMP |int |string $num2): int

Функция сравнивает два числа.

Список параметров

num1

Объект GMP , целое число (int ) или строка (string ), которая интерпретируется как число по той же логике как если бы строка использовалась в функции gmp_init() с автоматическим определением основания системы счисления — когда значение параметра base равно 0.

num2

Объект GMP , целое число (int ) или строка (string ), которая интерпретируется как число по той же логике как если бы строка использовалась в функции gmp_init() с автоматическим определением основания системы счисления — когда значение параметра base равно 0.

Возвращаемые значения

Функция возвращает положительное значение, если a > b, ноль, если a = b, и отрицательное значение, если a < b.

Примеры

Пример #1 Пример сравнения чисел функцией gmp_cmp()

<?php
$cmp1 = gmp_cmp("1234", "1000"); // Первое число больше второго
$cmp2 = gmp_cmp("1000", "1234"); // Первое число меньше второго
$cmp3 = gmp_cmp("1234", "1234"); // Числа равны
echo "$cmp1$cmp2$cmp3\n";
?>

Результат выполнения приведённого примера:

1 -1 0

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 1 note

up
2
russell dot harper at springboardnetworks dot com
16 years ago
I've encountered a memory leak in gmp_cmp if a literal string is used as the second value inside of loops. A workaround is to initialize first, then use the variable. I wasn't able to generate a minimum code sample, it's something more complicated, but I was able to fix it as follows:
<?php
$x = gmp_init(strval(mt_rand()));
// Depending on surrounding code, may have leaks
while (true)
{
 if (!gmp_cmp($x, '1'))
 print 'one'."\n";
}
// Usually doesn't have leaks
$one = gmp_init('1');
while (true)
{
 if (!gmp_cmp($x, $one))
 print 'one'."\n";
}
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /