php settype () int всегда возвращает 1 - PullRequest
2 голосов
/ 28 октября 2011

Я получаю переменную от $_GET['category']. Это всегда должно быть целым числом. Поэтому, когда я устанавливаю переменную, я использую:

$category=settype($_GET['category'], "int");
// Also tried
$category=settype($_GET['category'], "integer");

Однако это всегда возвращает 1. Это числа в строке запроса, например:

http://domain.com/example.php?category=57

Когда я echo $category всегда возвращает 1. Не имеет значения, что ?category= стоит за ним для числа.

Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 4 ]

5 голосов
/ 28 октября 2011

settype изменяет тип переменной. Вы используете его так, как если бы оно вернуло новую переменную.

Однако settype возвращает true, если изменение типа прошло успешно, и false в противном случае. Вы видите результат 1, так как это строковое представление true.

Вы должны использовать casting или intval :

$category = (int) $_GET['category']; // or ...
$category = intval($_GET['category']);
1 голос
/ 28 октября 2011

settype возвращает TRUE в случае успеха или FALSE в случае ошибки.

Он не возвращает значение, он просто возвращает, была ли установка типа успешной или нет. Ваша переменная $_GET['category'] теперь является int. Если вы хотите выполнить приведение, которое возвращает значение, но оставляет переменную нетронутой, синтаксис:

$category = (int)$_GET['category'];
0 голосов
/ 16 мая 2018

Пожалуйста, прочитайте документацию правильно.

Первый аргумент - передача по ссылке .Так что нет необходимости устанавливать возвращаемое значение в другой переменной.

Вам просто нравится,

$category = $_GET['category'];
settype($category, "integer");

Спасибо.

0 голосов
/ 28 октября 2011

Пожалуйста, прочитайте документацию для settype().К вашему сведению, его возвращаемое значение равно bool.

Вместо этого попробуйте выполнить приведение, например

$category = (int) $_GET['category'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...