0

重複の可能性:
!$page == false または $page in php?

これら 2 種類のチェックの違いは何ですか? そして、失敗して false を返す関数またはメソッドと呼ばれる型チェックの正しい方法はどれでしょうか?

if (!is_dir($path)) {...}

また

if (is_dir($path) === false) {...}
4

4 に答える 4

2
(!is_dir($path)){...}

IF is_dir($path) はEQUALと false です。

(is_dir($path) === false){...}

IF is_dir($path) はIDENTIFCALから false です。is_dir($path) の結果はブール値の FALSE 値でなければならないという意味で、これはより明確です。他に何もしません。

この例を実行します。

<?php

$var = 0;

if($var == false){
    echo 'Var is EQUAL to FALSE.';
}

if($var === false){
    echo 'Var is IDENTICAL to FALSE.';
}

?>

比較演算子については、こちらを参照してください。

于 2012-11-18T11:44:21.153 に答える
1

$a が 0 に設定されている場合、または $a が設定されていない場合、!$a は true になります。3 つの等号は、null っぽい値だけでなく、false を厳密にチェックします。

于 2012-11-18T11:43:04.197 に答える
0

いくつか例を挙げればわかりやすいと思います(コマンドプロンプト/ターミナルでphpコマンドを実行する必要があります)!は論理演算子ではなく、phpのドキュメントでは、「$ aがTRUEでない場合、!$aの結果はTRUEになります」と定義されています。

php -r "$a=NULL; $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a=''; $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a=array(); $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a=false; $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a=0; $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a=0.0; $b = !$a; var_dump($b);"

bool(true)を返します

php -r "$a='0'; $b = !$a; var_dump($b);"

bool(true)を返します

$ a === falseは、$ aが実際のボレアンであり、その値がfalseの場合にのみtrueになります(他のすべての以前の例は!演算子でfalseになります)

php -r "$a=false; $b = $a === false; var_dump($b);"

bool(true)を返します

あなたの例では、not演算子を使用してください!is_dir結果のタイプを確認する必要がないためです。

于 2012-11-18T11:59:25.357 に答える
0

演算子は===「同じ値と同じ型」の比較です。そのため、型が既にfalse に等しい$foo === false場合にのみ trueになりますが、型に応じて異なる操作を実行します(たとえば、がオブジェクトまたはリソースの場合、null 値かどうかを確認します。文字列の場合は、 null をチェックします (空の文字列もあると思いますが、それについてはよくわかりません。整数の場合は、ゼロかどうかをチェックします。基本的には、bool 型を追加する前の C の演算子と同様に機能します (ここで boolean は値は実際には値でした)。$foobool!$foo$foo$foo!int

コードでは、どちらの例も「正しい」ですが、!演算子を使用した最初の例が最も簡潔であり、優先する必要があります。

于 2012-11-18T11:44:06.810 に答える