int — Приведение к 32-битному целому числу может привести к усечению 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-битной среде? Собственно, так и есть, так почему эта «записка»?

Спасибо за внимание!

0

Решение

Максимальный и минимальный размер целого числа зависит от сборки PHP: 32 или 64 бита (операционная система и процессор также должны следовать)

За 32-битный PHP диапазон между]-2147483648, 2147483647[
За 64-битный PHP диапазон между]-9223372036854775808, 9223372036854775807[

Мой тест (32-битный PHP, 64-битный Windows 7, 64-битный Intel CORE i3):

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

Будет ли выход:

int(2147483647)

2-й тест (просто увеличить на 1 последнее значение)

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

Будет ли выход:

int(-2147483648)

Наконец: чтобы быть уверенным в максимальном значении целого числа в вашей среде, просто напечатайте это

var_dump(PHP_INT_MAX);
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]