强制转换为 32 位整数可能会导致截断 PHP Propel?

Cast to a 32 bit integer may result in truncation PHP Propel?

查看 Propel 的源代码(PHP ORM 库),我在 propel/propel1/runtime/lib/query/Criteria.php 文件中找到了这个方法:

  /**
     * Set offset.
     *
     * @param int $offset An int with the value for offset.  (Note this values is
     *                    cast to a 32bit integer and may result in truncation)
     *
     * @return Criteria Modified Criteria object (for fluent API)
     */
    public function setOffset($offset)
    {
        $this->offset = (int) $offset;

        return $this;
    }

为什么在文档评论中他们说转换为 int 的值可能会导致截断??? int 不是保存为例如4000000000 在 64 位环境中?其实是的,为什么要这样"Note"?

感谢关注!

整数的最大和最小大小取决于 PHP 的构建:32 或 64 位(操作系统和处理器也必须遵循)

对于PHP 32位,范围在]-21474836482147483647[=之间43=][
对于 PHP 64 位 ,范围介于 ]-92233720368547758089223372036854775807[

我的测试(PHP 32 位,WINDOWS 7 个 64 位,Intel CORE i3 64 位):

<?php
$i = (int)2147483647;
var_dump($i);

将输出:

int(2147483647)

第二次测试(只需将最后一个值加 1)

<?php
    $i = (int)2147483647;
    var_dump($i);

将输出:

int(-2147483648)

最后:要确定您环境中整数的最大值,只需打印此

var_dump(PHP_INT_MAX);