Довольно простой вопрос, но не уверен в ответе. Могу ли я передать логическую переменную через get? Например:
http://example.com/foo.php?myVar=true
то у меня есть
$hopefullyBool = $_GET['myVar'];
Является ли $hopefullyBool
логическим или строковым? Моя гипотеза заключается в том, что это строка, но кто-то может мне сообщить? благодаря
Все параметры GET будут содержать строку в PHP. Чтобы получить тип boolean pass как то, что оценивается как true
или false
как 0
или 1
, используйте:
$hopefullyBool = (bool)$_GET['myVar'];
Если вы хотите передать строку true
или false
тогда:
$hopefullyBool = $_GET['myVar'] == 'true' ? true : false;
Он будет передан как строка. Хотя вы можете преобразовать его с помощью bool cast, рекомендуется не делать этого в некоторых случаях.
Вы бы лучше сделали, если myVar == "True"
Будь осторожен:
>>> bool("foo") True >>> bool("") False
Пустые строки оцениваются в False, но все остальное оценивает значение True. Поэтому это не должно использоваться для каких-либо разборов.
Если вы хотите избежать утверждения if:
filter_var('true', FILTER_VALIDATE_BOOLEAN); //bool(true) filter_var('false', FILTER_VALIDATE_BOOLEAN); //bool(false)