3

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

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

当我发布8911076856它回声1,但它应该是0

4

4 回答 4

9

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

echo ((int)8911076856);

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

于 2012-08-22T14:05:20.500 回答
7

使用fmod

echo fmod(8911076856, 11);
于 2012-08-22T14:06:35.367 回答
2

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

于 2012-08-22T14:06:15.593 回答
-2

你试过这个:

if (!empty($_GET[ "lic" ])) $lic = intval ($_GET[ "lic" ]); 否则 $e = true;

回声($lic % 11);

于 2012-08-22T14:12:50.473 回答