php modulo返回错误的结果

时间:2012-08-22 14:00:24

标签: php

我遇到了这段代码的问题:

if (!empty($_GET[ "lic" ])) $lic = $_GET[ "lic" ]; else $e = true;
echo ($lic % 11);

当我发布8911076856时,它会回显1,但它应该是0

4 个答案:

答案 0 :(得分:9)

值“8911076856”可能高于系统的最大整数值。

echo ((int)8911076856);

我的32位系统上的结果是321142264。

答案 1 :(得分:5)

使用fmod

echo fmod(8911076856, 11);

答案 2 :(得分:2)

这很可能是因为您发布的号码高于PHP_INT_MAX,在大多数64位系统AFAIK上都是9223372036854775807。如果你使用的是32位系统(我希望你是这样),它可能是2147483647。

答案 3 :(得分:-2)

你试过这个:

if(!empty($ _ GET [“lic”]))$ lic = intval ($ _ GET [“lic”]); else $ e = true;

echo($ lic%11);