Php 整型强制转换问题

Php 整型强制转换问题,php,arrays,Php,Arrays,CASE#1:我有以下代码输出正确的数字 <?php $integer = 10000000000; $array = array($integer); print_r($array[0]); //output = 1000000000 ?> <?php $integer = (int)1000000000; $array = array($integer); print_r($array[0]); //output = 10000000

CASE#1:
我有以下代码输出正确的数字

<?php 
   $integer = 10000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>
<?php
   $integer = (int)1000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>
CASE#3:
如果我将数字缩小1 0并键入cast,则它将返回正确的数字

<?php 
   $integer = 10000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>
<?php
   $integer = (int)1000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>


为什么它在
情况下不产生正确的输出#2

您的平台上很可能超过int的最大值

从:

整数的大小取决于平台,尽管是最大值 大约20亿是通常的值(即32位有符号)。整数大小可以是 使用常量PHP_INT_SIZE确定,使用 自PHP4.4.0和PHP5.0.5以来的常量PHP_INT_MAX

对于32位平台:

整数可以从-2147483648到2147483647

对于64位平台:


整数的范围可以是-9223372036854775808到9223372036854775807。在第二个示例中,您溢出了整数的最大大小。在第一个示例中,PHP自动使用较大的数值数据类型(如
float
)来保存变量,因为它对于int太大。在示例2中,当显式将其转换为
int
时,因为它大于最大大小,所以会将其截断为该最大大小。在例3中,数字足够短,可以包含在
int
中。如果尝试将其强制转换为
浮点值
,将产生正确的结果

<?php
    $integer = (float)10000000000;
    $array = array($integer);
    print_r($array[0]); //output = 10000000000
?>


常量
PHP\u INT\u SIZE
将告诉您PHP安装上支持的最大
INT
大小。

整数的最大值取决于平台,但大约为20亿。案例2是100亿

如果您想使用浮点进行类型转换,它有一个更高的限制


引用:

看起来您已超出整数类型的限制。整数的最大值为2147483647。请在此阅读:是的,您已经超过了整数类型的限制,因此它将转换为已知的最大整数。应该注意,第一种情况“有效”,因为PHP会自动将其转换为字符串(或可以处理数字的某种类型)。在32位系统上,整数类型为2字节,而在64位系统上为4字节。在您的情况下,这取决于您的phpIn构建您的答案您解释说,当您删除一个0时,一切正常,因此在这种情况下,您的系统可以处理4字节整数,并且您超过了2位的限制,因此我建议您使用float而不是integer,它应该支持最多8字节的整数,这是有意义的。我改用了
float
,它输出了正确的数字。谢谢