字符串数字到整数不起作用 PHP
String number to integer not working PHP
我正在尝试将字符串数字转换为整数,但它没有按预期工作这里是有问题的代码:
$usage['msisdn'] = "46720000000";
$usage['msisdn'] = (int)$usage['msisdn'];
echo $usage['msisdn'];
它显示 2147483647 为整数,但我想得到 46720000000 作为整数。
怎么了?
顺便说一句,我正在使用 json_encode();
解析数据
更新: 没关系我已经让它与 intval()[ 一起工作了=12=]
那是因为int32
的最大值是2,147,483,647。您的 phone 数量超过了这个值。
您可以使用以下方法在您的服务器上找到 int 的最大值:
echo PHP_INT_MAX;
我认为将 phone 数字存储为整数是一种不好的做法,以后可能会影响到您。为什么?因为 phone 数字可能以:
开头
- IDD:
00
或 +
- NDD:
0
此外,您可能希望在某些时候格式化 phone 数字,将其存储为字符串,使这部分变得更容易。
圣诞红利:)libphonenumber-for-php
您的代码无法正常工作,因为根据您的系统将字符串转换为 int 作为最大值,如文档中所述:
The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
来源:http://php.net/manual/en/function.intval.php
由于您无法轻易修改 max_int 值,您可以尝试使用转换为浮点数。
$usage['msisdn'] = floatval($usage['msisdn']);
我正在尝试将字符串数字转换为整数,但它没有按预期工作这里是有问题的代码:
$usage['msisdn'] = "46720000000";
$usage['msisdn'] = (int)$usage['msisdn'];
echo $usage['msisdn'];
它显示 2147483647 为整数,但我想得到 46720000000 作为整数。
怎么了?
顺便说一句,我正在使用 json_encode();
解析数据更新: 没关系我已经让它与 intval()[ 一起工作了=12=]
那是因为int32
的最大值是2,147,483,647。您的 phone 数量超过了这个值。
您可以使用以下方法在您的服务器上找到 int 的最大值:
echo PHP_INT_MAX;
我认为将 phone 数字存储为整数是一种不好的做法,以后可能会影响到您。为什么?因为 phone 数字可能以:
开头- IDD:
00
或+
- NDD:
0
此外,您可能希望在某些时候格式化 phone 数字,将其存储为字符串,使这部分变得更容易。
圣诞红利:)libphonenumber-for-php
您的代码无法正常工作,因为根据您的系统将字符串转换为 int 作为最大值,如文档中所述:
The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
来源:http://php.net/manual/en/function.intval.php
由于您无法轻易修改 max_int 值,您可以尝试使用转换为浮点数。
$usage['msisdn'] = floatval($usage['msisdn']);