0

Debian 7.0.0 に LAMP の最新バージョンをインストールしました。

なぜか以下のコード

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

戻り値

true
LogIncrease=false

$LogIncrease が実際には false であり、

true
LogIncrease=true

$LogIncrease が実際に true の場合

私が使うとき

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

私はいつも偽物になります。条件文の使用方法の何が問題なのか誰か教えてもらえますか?

4

2 に答える 2

4

これはおそらく*$LogIncrease文字列"false"対ブール値であるため発生していますfalse

documentation によると、以下のみが boolean に変換されますfalse:

ブール値に変換する場合、次の値は FALSE と見なされます。

  • ブール値FALSEそのもの
  • 整数 (0ゼロ)
  • フロート (0.0ゼロ)
  • 空文字 と文字列"0"
  • 要素がゼロの配列
  • メンバー変数がゼロのオブジェクト(PHP 4 のみ)
  • 特別な型NULL(未設定の変数を含む)
  • 空のタグから作成されたSimpleXMLオブジェクト

文字列"false"は に評価されませんfalse。つまり、"false" == true.

したがって、var_dump($LogIncrease)次のように出力された場合:

string(5) "false"

あなたの状態が と評価されるのは正常ですtrue

* コードのスニペットから十分な情報が得られないため、おそらくここで言っています。

于 2013-06-27T02:59:55.360 に答える
1

$LoginIncrease がそれぞれ空、True、False の 3 つのケースを次に示します。

ケース 1:

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

出力:

LogIncrease is False 
string(0) ""

ケース 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)

お役に立てれば。

于 2013-06-27T03:15:05.723 に答える