По какому принципу работают (int) и intval?

116
11 января 2021, 19:40

В документации указано, что максимальное знаковое целое число для функции 9223372036854775807.

И, если мы в функцию добавляем строку с превышенной нормой, то на выходе получим 9223372036854775807.

echo (int) '4200000000000000000000';
// 9223372036854775807

Но если будет не строка, а число - на выходе получаем нечто, по не ясным принципам:

echo (int) 4200000000000000000000;
// -5857648805777768448

Почему так?

Answer 1

Переполнение сетки же. Оно у вас несколько раз происходит.

Для теста можете такой код запустить:

$test = 4200000000000000000000 - 9223372036854775807;
while($test > 0) {
    $test = $test - 9223372036854775807;
}
echo (int)$test; // -5857648805777768448
READ ALSO
Проблема с почтой после переезда сайта

Проблема с почтой после переезда сайта

После переезда на новый сервер перестала отправляться почта

129
Как сделать сортировку в Wordpress?

Как сделать сортировку в Wordpress?

Всем доброго времени! Либо аномалия, либо я не то делаю, есть сортировка которая работает на англверсии сайта(используется плагин WPML) но на укр

107
Вывод полученных данных из foreach php

Вывод полученных данных из foreach php

Не могу понять как можно извлечь полученные данные в foreach (возможна не точная интерпретация):

102
Получить улицу, адрес и номер здания по latitude, longitude

Получить улицу, адрес и номер здания по latitude, longitude

Написал такой код для получения адреса по lat lng, но проблема в том что он возврашает nullИ по ссылке по броузеру я получаю "жилое"

105