CascadiaPHP 2024

gmp_cmp

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

gmp_cmpCompara números

Descrição

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

Compara dois números.

Parâmetros

num1

Um objeto GMP, um int ou uma string numérica.

num2

Um objeto GMP, um int ou uma string numérica.

Valor Retornado

Retorna um valor positivo se a > b, zero se a = b e um valor negativo se a < b.

Exemplos

Exemplo #1 Exemplo de gmp_cmp()

<?php
$cmp1
= gmp_cmp("1234", "1000"); // maior que
$cmp2 = gmp_cmp("1000", "1234"); // menor que
$cmp3 = gmp_cmp("1234", "1234"); // igual a

echo "$cmp1 $cmp2 $cmp3\n";
?>

O exemplo acima produzirá:

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