字符串数字到整数不起作用 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']);