これら 2 種類のチェックの違いは何ですか? そして、失敗して false を返す関数またはメソッドと呼ばれる型チェックの正しい方法はどれでしょうか?
if (!is_dir($path)) {...}
また
if (is_dir($path) === false) {...}
これら 2 種類のチェックの違いは何ですか? そして、失敗して false を返す関数またはメソッドと呼ばれる型チェックの正しい方法はどれでしょうか?
if (!is_dir($path)) {...}
また
if (is_dir($path) === false) {...}
(!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.';
}
?>
比較演算子については、こちらを参照してください。
$a が 0 に設定されている場合、または $a が設定されていない場合、!$a は true になります。3 つの等号は、null っぽい値だけでなく、false を厳密にチェックします。
いくつか例を挙げればわかりやすいと思います(コマンドプロンプト/ターミナルで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結果のタイプを確認する必要がないためです。
演算子は===
「同じ値と同じ型」の比較です。そのため、型が既にfalse に等しい$foo === false
場合にのみ trueになりますが、型に応じて異なる操作を実行します(たとえば、がオブジェクトまたはリソースの場合、null 値かどうかを確認します。文字列の場合は、 null をチェックします (空の文字列もあると思いますが、それについてはよくわかりません。整数の場合は、ゼロかどうかをチェックします。基本的には、bool 型を追加する前の C の演算子と同様に機能します (ここで boolean は値は実際には値でした)。$foo
bool
!$foo
$foo
$foo
!
int
コードでは、どちらの例も「正しい」ですが、!
演算子を使用した最初の例が最も簡潔であり、優先する必要があります。