字符串数到整数不工作的PHP

时间:2015-12-16 08:49:28

标签: php string integer msisdn

我正在尝试将一个字符串数字转换为一个整数,但它没有按预期工作,这里是带有问题的代码:

$usage['msisdn'] = "46720000000";
$usage['msisdn'] = (int)$usage['msisdn'];

echo $usage['msisdn'];

它将2147483647作为整数回显,但我希望得到46720000000作为整数 怎么了?

顺便说一句,我使用json_encode();

解析数据

更新: 没关系我已经使用了intval()

2 个答案:

答案 0 :(得分:7)

这是因为int32的最大值是2,147,483,647。您的电话号码超过此值。

您可以使用以下命令在服务器上找到int的最大值:

echo PHP_INT_MAX;

我认为将电话号码存储为整数是一种不好的做法,以后可能会对您产生影响。为什么?因为电话号码可能以:

开头
  • IDD 00+
  • NDD 0

此外,您可能希望在某些时候格式化电话号码,将其存储为字符串使这部分更容易。

圣诞节奖金:) libphonenumber-for-php

答案 1 :(得分:4)

您的代码无法正常工作,因为根据您在系统中引用的系统将转换字符串转换为int作为最大值:

  

最大值取决于系统。 32位系统的最大有符号整数范围为-2147483648到2147483647.因此,例如在这样的系统上,intval('1000000000000')将返回2147483647.64位系统的最大有符号整数值为9223372036854775807。

来源:http://php.net/manual/en/function.intval.php

由于您无法轻松修改max_int值,因此您可以尝试使用转换来浮动。

$usage['msisdn']  = floatval($usage['msisdn']);