Как php преобразовывает логические переменные? - PullRequest
2 голосов
/ 13 ноября 2009

Как php преобразовывает логические переменные?

Я пытался сохранить логическое значение в массиве:

$result["Users"]["is_login"] = true;

но когда я использую отладку, значение is_login будет пустым. и когда я делаю условия вроде:

if($result["Users"]["is_login"])

условия всегда ложные.

Тогда я попытался сделать это:

$result["Users"]["is_login"] = "true";

и это сработало.

Это не имеет большого значения, но когда я возвращаю логические значения из функций, мне все равно приходится преобразовывать их в строки.

Ответы [ 3 ]

9 голосов
/ 13 ноября 2009

нет актеров

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).
0 голосов
/ 13 ноября 2009

Попробуйте:


if((bool)$result["Users"]["is_login"] == true)
{
    // do something
}

.

И ответь на одну из твоих встреч:

но когда я использую отладку, значение is_login будет пустым. и когда я делаю условия вроде:

if($result["Users"]["is_login"])

, поскольку возвращаемое значение - логическое значение true, в PHP оно не имеет представления для него, поэтому отображается как пустое (в то время как, если значение является логическим false, вы увидите 0

0 голосов
/ 13 ноября 2009

В вашем примере не происходит кастинг.
Ваша проблема, вероятно, где-то еще.

Не могли бы вы поделиться более полным фрагментом кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...