Передача логического значения через PHP GET
довольно простой вопрос здесь, не уверен, что ответ. Могу ли я передать логическую переменную через get? Например:
http://example.com/foo.php?myVar=true
тогда у меня есть
$hopefullyBool = $_GET['myVar'];
Is $hopefullyBool
логическое значение или строка? Моя гипотеза заключается в том, что это строка, но может ли кто-нибудь дать мне знать? Спасибо
3 ответов
все параметры GET будут строками в PHP. Чтобы получить тип boolean, передайте как что-то, что оценивается как true
или false
как 0
или 1
, а затем использовать:
$hopefullyBool = (bool)$_GET['myVar'];
если вы хотите передать строку true
или false
затем:
$hopefullyBool = $_GET['myVar'] == 'true' ? true : false;
или еще лучше:
$hopefullyBool = filter_var($_GET['myVar'], FILTER_VALIDATE_BOOLEAN);
он будет передан как строка. Хотя вы можете преобразовать его с помощью 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)