PHP 8.3.4 Released!

gmp_cmp

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

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

Описание

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

Сравнивает два числа.

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

num1

Объект GMP, целое число (int) или числовая строка (string).

num2

Объект GMP, целое число (int) или числовая строка (string).

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

Возвращает положительное значение, если 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
add a note

User Contributed Notes 1 note

up
2
russell dot harper at springboardnetworks dot com
13 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";
}

?>
To Top