2013-06-27 3 views
0

Я только что установил последнюю версию LAMP на Debian 7.0.0.

По какой-то причине, следующий код

if ($LogIncrease==true) echo "true" . "<br\>"; 
    else echo "false" . "<br\>"; 
    echo "LogIncrease=" . $LogIncrease . "<br\>"; 

возвращает

true 
LogIncrease=false 

когда $ LogIncrease на самом деле ложь и

true 
LogIncrease=true 

когда $ LogIncrease это на самом деле так

Когда я пользуюсь

if ($LogIncrease===true) echo "true" . "<br\>"; 
    else echo "false" . "<br\>"; 

Я всегда получаю ложь. Может ли кто-нибудь сказать мне, что не так с тем, как я использую условное заявление?

+0

Является ли '$ LogIncrease' фактически когда-либо« истинным », а не просто истинным? –

+2

'var_dump ($ LogIncrease);' --- всегда использовать его для отладки, а не 'echo' – zerkms

+0

Где вы определяете' $ LoginIncrease'? Кроме того, для отладки используйте var_dump(). –

ответ

4

Это, вероятно, * происходит потому, что $LogIncrease является строкой "false" по сравнению с булевым false.

According to the documentation, только следующие преобразуются в булево false:

При преобразовании в булево, следующие значения считаются FALSE:

  • булево FALSE сам
  • целое0 (ноль)
  • плавать0.0 (ноль)
  • пустогострока, а строка "0"
  • массив с нулевыми элементами
  • объекта с переменными нулевыми членами (PHP 4 только)
  • специальный тип NULL (включая неустановленные переменные)
  • SimpleXML объекты, созданные из пустых тегов

Строка "false" не вычисляется false. Другими словами, "false" == true.

Поэтому, если var_dump($LogIncrease) выводит следующее:

string(5) "false" 

Это нормально, что ваше состояние оценивается как true.

* Вероятно, здесь, потому что у меня недостаточно информации из вашего фрагмента кода, чтобы быть уверенным.

+0

lol. Действительно, вы определили мою проблему. Я забыл, что я устанавливал $ LogIncrease в строку «true» или «false», а не в boolean. Большое вам спасибо за вашу помощь. – OtagoHarbour

1

Вот три случая, когда $ LoginIncrease пуст, правда, и Ложные соответственно:

Случай 1:

$LogIncrease = ""; 
if ($LogIncrease == True) echo "LogIncrease is True <br/>"; 
else echo "LogIncrease is False <br/>"; 
var_dump($LogIncrease); 

Выход:

LogIncrease is False 
string(0) "" 

Case 2:

$LogIncrease = True; 
if ($LogIncrease == True) echo "LogIncrease is True <br/>"; 
else echo "LogIncrease is False <br/>"; 
var_dump($LogIncrease); 

Выход

LogIncrease is True 
bool(true) 

Случай 3:

$LogIncrease = False; 
if ($LogIncrease == True) echo "LogIncrease is True <br/>"; 
else echo "LogIncrease is False <br/>"; 
var_dump($LogIncrease); 

Выход

LogIncrease is False 
bool(false) 

Надеюсь, это поможет.

Смежные вопросы