Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Правильное преобразование типов
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
will123 А нельзя просто проверить с помощью gettype тип данных без всяких преобразований - при этом все получаемые от пользователя данные по умолчанию имебт тип string
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
will123
Отправлено: 12 Декабря, 2009 - 14:21:35
Новичок
Покинул форум
Сообщений всего: 28
Дата рег-ции: Авг. 2009
Помог: 0 раз(а)
JustUserR пишет:
will123 А нельзя просто проверить с помощью gettype тип данных без всяких преобразований - при этом все получаемые от пользователя данные по умолчанию имебт тип string
так если мы извлекаем из URI например $id (mysite/some/id), то всяко разно оно будет иметь тип string. А мне надо проверить является ли айди числом, вот поэтому я преобразую его сначала в целое
Ch_chov
Отправлено: 12 Декабря, 2009 - 14:23:10
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Тогда is_numeric подойдёт. Добавление
А если нужно принимать только целые числа то ctype_digit.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
will123 пишет:
Так если мы извлекаем из URI например $id (mysite/some/id), то всяко разно оно будет иметь тип string. А мне надо проверить является ли айди числом, вот поэтому я преобразую его сначала в целое
Ch_chov пишет:
Тогда is_numeric подойдёт
Про это собственно я и говорил - заниматься явными/неявными преобразованиями для таких целей не есть хорошо - учитывая что PHP язык со свободным типом данных и строки и числа мало чем отличаются то любую проверку всегда можно сделать с помощью регулярного выражения
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Hunter
Отправлено: 14 Декабря, 2009 - 17:24:45
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009 Откуда: Блага
Помог: 0 раз(а)
will123 пишет:
//на входе подаю $id = 7opoppoo$id = (int) $id; //$id станет 7. т.е. отрежется opoppoo, а мне надо если присутствуют символы в числе, то возвращало false //а если такis_int ($id); //всегда вернет false, т.к я извлекаю id из URI,
// .. тут что нибудь Ваше для получения значения $id
if (gettype($id) == 'integer') {
settype($id, 'integer');
}
else {
echo 'это не является целым числом'
}
// .. тут далее то что вам надо делать далее
а вообще необходимость преобразования типов "вручную" редко возникает в рнр.. (Добавление)
исходя из задачи (не обратил внимания сразу)) строку №8 надо заменить на
$id = "false";
settype($id, "boolean");
JustUserR
Отправлено: 14 Декабря, 2009 - 17:45:58
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Цитата:
if (gettype($id) == "integer") {5. settype($id, "integer");
Что это за бред? Если значение равно integer то установить его в integer ? Может имелось в виду какое преобразование
Да и в конце концов что мешает использовать is_numeric ?
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Hunter
Отправлено: 15 Декабря, 2009 - 10:18:56
Частый гость
Покинул форум
Сообщений всего: 214
Дата рег-ции: Дек. 2009 Откуда: Блага
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.