查看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;
}
为什么在doc注释中他们说转换为int的值可能会导致截断?不是int保持在例如在64位环境中4000000000
?实际上,它是,为什么这个"注意"?
感谢您的关注!
答案 0 :(得分:3)
整数的最大和最小大小取决于PHP的构建:32或64位(操作系统和处理器也必须遵循)
对于 PHP 32位,范围介于] -2147483648 , 2147483647 [
对于 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);