强制转换为 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位,范围在]-2147483648、2147483647[=之间43=][
对于 PHP 64 位 ,范围介于 ]-9223372036854775808、9223372036854775807[
我的测试(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);
查看 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位,范围在]-2147483648、2147483647[=之间43=][
对于 PHP 64 位 ,范围介于 ]-9223372036854775808、9223372036854775807[
我的测试(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);