Как php лидирует логические переменные?
Я пытался сохранить логическое значение в массив:
$result["Users"]["is_login"] = true;
но когда я использую debug, значение is_login пустое. и когда я выполняю условные обозначения:
if($result["Users"]["is_login"])
условия всегда ложные.
Затем я попытался сделать это:
$result["Users"]["is_login"] = "true";
и это сработало.
Это не очень много, но когда я возвращаю логические значения из функций, мне все равно нужно преобразовать их в строки.
нет броска
if($result["Users"]["is_login"])
должно сработать. вы можете попробовать использовать var_dump($result["Users"]["is_login"]);
чтобы убедиться, что переменная установлена правильно.
вы можете проверить, установлена ли переменная с помощью функции isset
( manual ).
Также вы можете найти здесь, как PHP оценивает логические значения:
When converting to boolean, the following values are considered FALSE: the boolean FALSE itself the integer 0 (zero) the float 0.0 (zero) the empty string, and the string "0" an array with zero elements an object with zero member variables (PHP 4 only) the special type NULL (including unset variables) SimpleXML objects created from empty tags Every other value is considered TRUE (including any resource).
В вашем примере не происходит кастинг.
Ваша проблема, вероятно, где-то в другом месте.
Не могли бы вы поделиться более полным кодом?
Пытаться:
if((bool)$result["Users"]["is_login"] == true) { // do something }
,
И ответьте на одно из ваших столкновений:
но когда я использую debug, значение is_login пустое. и когда я выполняю условные обозначения:
if($result["Users"]["is_login"])
так как ваше возвращаемое значение является логическим значением true
, в PHP у него нет представления для него, поэтому они выглядят пустыми (главное, если значение является логическим значением false
, тогда вы увидите 0