'верный' в Получают переменные

В PHP, когда у Вас есть что-то в URL как "var=true" в URL, делает 'истинное', и 'ложное' в URL переводится в логические переменные, или они равняются тексту, 'верному' или 'ложному'? Например, был бы, с URL, имеющим "var=false" в нем:

if ($_GET['var'] == false) { ... }

работа? Или переменная всегда была бы верна, так как она имеет текст в нем?

13
задан BoltClock 2 August 2010 в 04:24
поделиться

2 ответа

Они передаются как строки, поэтому всегда являются правдивыми, если только они не являются одним из них, которые вместо этого оцениваются как 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'];
    }
}
15
ответ дан 1 December 2019 в 19:58
поделиться

Нет, $ _ 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));
17
ответ дан 1 December 2019 в 19:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: