'true' в Получить переменные - PullRequest
13 голосов
/ 02 августа 2010

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

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

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

Ответы [ 2 ]

17 голосов
/ 02 августа 2010

Нет, $_GET всегда будет содержать только строки.

Однако вы можете отфильтровать , чтобы получить логическое значение.

FILTER_VALIDATE_BOOLEAN:
Возвращает TRUE для "1", "true", "on" и "yes". Возвращает FALSE в противном случае. Если установлено значение FILTER_NULL_ON_FAILURE, FALSE возвращается только для "0", "false", "off", "no" и "", а NULL возвращается для всех не булевых значений. *

Пример: * * тысяча двадцать-восемь

$value = filter_input(INPUT_GET, "varname", FILTER_VALIDATE_BOOLEAN,
    array("flags" => FILTER_NULL_ON_FAILURE));
15 голосов
/ 02 августа 2010

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