PHP Conference Japan 2024

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,可以解释为一个数字,遵循与在 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 个注释

2
russell dot harper at springboardnetworks dot com
14 年前
如果在循环内将文字字符串用作第二个值,我遇到了 gmp_cmp 中的内存泄漏。解决方法是先初始化,然后使用变量。我无法生成最小代码示例,它更复杂一些,但我能够按如下方式修复它

<?php

$x
= gmp_init(strval(mt_rand()));

// 根据周围代码,可能存在泄漏
while (true)
{
if (!
gmp_cmp($x, '1'))
print
'one'."\n";
}

// 通常不存在泄漏
$one = gmp_init('1');

while (
true)
{
if (!
gmp_cmp($x, $one))
print
'one'."\n";
}

?>
To Top