Xwab
Форумыnavigate_nextПрограммирование на PHP

Странная вещь с intval
Сообщения
mixlion

Парсил сейчас базу ип логофона и заметил странную особенность,
var_dump($range['ip1']); // выводит object(SimpleXMLElement)#10 (1) {
[0]=>
string(10) "2996862976"
}
echo $range['ip1']; // выводит 2996862976

echo intval($range['ip1']); // 2147483647
var_dump(intval($range['ip1'])); // int(2147483647)

Так же неверное число выводит если тип поля в бд поставить int и туда записывать $range['ip1']

01 Мар 2011, 23:33
Fashion

у intval есть лимиты  и ip выходят за их пределы

01 Мар 2011, 23:36
Mars

в C# есть такая замечательная вещь - System.IntPtr, и типизация строгая и всегда уверен что памяти хватит

02 Мар 2011, 0:19
Fuelen

Mars, и что? решил похвастаться знаниями сишарп? тут раздел про пхп и автора интересует данная функция в пхп

02 Мар 2011, 0:42
OZ_

IntPtr это тип переменных, а не функция.

02 Мар 2011, 0:57
suhonok

К сожелению цифровой лимит на инт и заканчивается в пхп, по этому используй строки

02 Мар 2011, 10:20
M0rbid

mixlion, если тебе нужно убедится что там именно число, то в таком случае, как вариант, вместо интвал можешь использовать чтото типа

preg_match(/[^0-9]/, $var, $m);

02 Мар 2011, 11:07
aBSuRD

is_numeric(), is_int() . А в БД тип поля ставь не int, а bigint.

02 Мар 2011, 11:11
Fashion

aBSuRD, для хранения ip достаточно и int, но с атрибутом unsigned

02 Мар 2011, 11:26
aBSuRD

Fashion, да разницы то.

02 Мар 2011, 13:02
Ответить на тему