• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • gmp_cmp()

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

    Compare numbers

    说明

    gmp_cmp(GMP$a, GMP$b): int

    Compares two numbers.

    参数

    $a

    可以是一个 GMP数据resouce,或一个可以转换为数值的字符串。

    $b

    可以是一个 GMP数据resouce,或一个可以转换为数值的字符串。

    返回值

    Returns a positive value ifa > b, zero ifa = band a negative value ifa < b.

    范例

    gmp_cmp() example

    <?php
    $cmp1 = gmp_cmp("1234", "1000"); // greater than
    $cmp2 = gmp_cmp("1000", "1234"); // less than
    $cmp3 = gmp_cmp("1234", "1234"); // equal to
    echo "$cmp1 $cmp2 $cmp3\n";
    ?>
    

    以上例程会输出:

    1 -1 0
    
    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";
    }
    ?>
    

    上篇:gmp_clrbit()

    下篇:gmp_com()