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
Форумы портала PHP.SU :: Версия для печати :: Проблема с settype()
Форумы портала PHP.SU » » Вопросы новичков » Проблема с settype()

Страниц (1): [1]
 

1. Le0_Nard - 04 Июля, 2015 - 12:54:58 - перейти к сообщению
Добрый день, уважаемые форумчане! На днях столкнулся с такой проблемой:
PHP:
скопировать код в буфер обмена
  1.  
  2. //Предположим, мы перешли по адресу
  3. // site.ru/page.php?id=4
  4.  
  5. $id = $_GET['id'];
  6. echo '$id = '.$id.'<br>'; //$id = '4'
  7. $id = settype($id, integer); //На всякий случай. От дебилов
  8. echo '$id = '.$id; //$id = 1
  9.  


Зачем-то любое число преобразуется в единицу. Наверное просто потому, что число есть, возвращается true.

Я знаю, что есть еще варианты, вроде (integer) $id, intval($id) и даже костыльный $id = ($id + 1) - 1, но хочется понять, почему settype() не работает должным образом.

Спасибо за уделенное время!
2. Panoptik - 04 Июля, 2015 - 13:15:22 - перейти к сообщению
наверное потому что второй аргумент надо передавать как строку а не константу, странно что вы не увидели warning



ну и все же короче будет
3. Le0_Nard - 04 Июля, 2015 - 21:25:03 - перейти к сообщению
'integer' тоже не помогает. Даже в двойных кавычках. Возвращает 1, а gettype() пишет, что $id - булево. Все равно уже переписал на (integer)$id.
4. Panoptik - 04 Июля, 2015 - 23:34:57 - перейти к сообщению
читаем еще внимательно документацию и видим что settype возвращает bool
но первый аргумент передается по ссылке, что значит что функция модифицирует значение аргумента вместо того чтобы вернуть новое значение

 

Powered by ExBB FM 1.0 RC1