我正在尝试将字符串编号转换为整数,但它没有按预期工作这里是有问题的代码:
$usage['msisdn'] = "46720000000";
$usage['msisdn'] = (int)$usage['msisdn'];
echo $usage['msisdn'];
它将 2147483647 回显为整数,但我想将 46720000000 作为整数。
怎么了?
顺便说一句,我正在使用 json_encode(); 解析数据;
更新: 没关系,我可以使用 intval()
那是因为 的最大值int32
是2,147,483,647。您的电话号码超过此值。
您可以使用以下命令在服务器上找到 int 的最大值:
echo PHP_INT_MAX;
我认为将电话号码存储为整数是一种不好的做法,以后可能会影响您。为什么?因为电话号码可能以:
00
或+
0
此外,您可能希望在某些时候格式化电话号码,将其存储为字符串,从而使这部分变得更加容易。
圣诞节奖金 :) libphonenumber-for-php
您的代码不起作用,因为根据文档中引用的系统将转换字符串转换为 int 作为最大值:
最大值取决于系统。32 位系统的最大有符号整数范围为 -2147483648 到 2147483647。例如,在这样的系统上,intval('1000000000000') 将返回 2147483647。64 位系统的最大有符号整数值为 9223372036854775807。
来源: http: //php.net/manual/en/function.intval.php
由于您无法轻松修改 max_int 值,因此您可以尝试使用转换来代替浮动。
$usage['msisdn'] = floatval($usage['msisdn']);