整数类型转换问题

Kha*_*han 7 php arrays

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

<?php 
   $integer = 10000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>
Run Code Online (Sandbox Code Playgroud)

CASE # 2: 但是当我明确地将相同的数字类型转换为整数时,它会给出不同的输出

<?php
    $integer = (int)10000000000;
    $array = array($integer);
    print_r($array[0]); //output = 1410065408
?>
Run Code Online (Sandbox Code Playgroud)

CASE # 3: 如果我将数字减去一个0并输入它,那么它将返回正确的数字

<?php
   $integer = (int)1000000000;
   $array = array($integer);
   print_r($array[0]); //output = 1000000000
?>
Run Code Online (Sandbox Code Playgroud)

为什么它没有产生正确的输出CASE # 2

anu*_*ava 4

您很可能超出了平台上 int 的最大值。

来自PHP 官方文档

整数的大小取决于平台,但通常的最大值约为 20 亿(即 32 位有符号)。从 PHP 4.4.0 和 PHP 5.0.5 开始,可以使用常量 PHP_INT_SIZE 确定整数大小,并使用常量 PHP_INT_MAX 确定最大值。

对于 32 位平台:

整数可以是从 -2147483648 到 2147483647

对于 64 位平台:

整数可以是从 -9223372036854775808 到 9223372036854775807