В PHP, когда у Вас есть что-то в URL как "var=true" в URL, делает 'истинное', и 'ложное' в URL переводится в логические переменные, или они равняются тексту, 'верному' или 'ложному'? Например, был бы, с URL, имеющим "var=false" в нем:
if ($_GET['var'] == false) { ... }
работа? Или переменная всегда была бы верна, так как она имеет текст в нем?
Они передаются как строки, поэтому всегда являются правдивыми, если только они не являются одним из них, которые вместо этого оцениваются как false:
''
' 0 '
Чтобы облегчить себе жизнь, я просто передаю логические переменные GET как 1
или 0
и проверяю их на одно из этих значений или выбираю значение по умолчанию соответствующим образом :
// Default value of false
$var = false;
if (isset($_GET['var']))
{
if ($_GET['var'] === '1' || $_GET['var'] === '0')
{
$var = (bool) $_GET['var'];
}
}
Нет, $ _ GET
всегда будет содержать только строки.
Однако вы можете отфильтровать его, чтобы получить логическое значение.
FILTER_VALIDATE_BOOLEAN
:
ВозвращаетИСТИНА
для«1»
,«истина»
,«на»
и«да»
. В противном случае возвращаетFALSE
. ЕслиFILTER_NULL_ON_FAILURE
установлен,FALSE
возвращается только для«0»
,«false»
,«off»
],«нет»
и«»
, иNULL
возвращается для всех небулевых значений.
Пример:
$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN,
array("flags" => FILTER_NULL_ON_FAILURE));