Передача логического значения через 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)