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


String number to integer not working PHP

我正在尝试将字符串编号转换为整数,但它没有按预期工作。以下是有问题的代码:

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

它将2147483647作为整数进行响应,但我希望得到46720000000作为整数
怎么了?

顺便说一下,我正在使用json_encode()解析数据;


更新:Nevermind我有它可以使用intval()

这是因为int32的最大值为2147483647。你的电话号码超过了这个值。

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

echo PHP_INT_MAX;

我认为将电话号码存储为整数是一种不好的做法,以后可能会影响到你。为什么?因为电话号码可能以开头

  • IDD00+
  • NDD:0

此外,你可能想在某个时候格式化电话号码,将其存储为字符串,使这一部分变得更容易。

圣诞节奖金:)php 的libphonenumber

您的代码无法工作,因为文档中引用了将字符串转换为int作为最大值的方法:

最大值取决于系统。32位系统的最大带符号整数范围为-2147483648到2147483647。例如,在这样的系统上,intval("000000000000")将返回2147483647。64位系统的最大有符号整数值为9223372036854775807。

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

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

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