PHP では変数が 0 の場合、その変数は false と「等しい」ことになります。では、0 と false を区別するにはどうすればよいでしょうか。この記事で説明するように、これは一部の条件文で非常に役立ちます。
まずコードを見てください:
このコードの機能は、文字列が特定の単語で始まるかどうかを確認することです
コードは次のとおりです | コードをコピー |
$title = "こんにちは。"; $keyword = "あなた"; if(strpos($title , $keyword ) == 0) { 「正しい」をエコー; } 他 { 「エラー」をエコー; } 出力: 正しい |
コードは正しいようですね?なぜ結果が間違っているのでしょうか?ヘルプマニュアルを確認すると、strpos() 関数は文字列内の単語を検索するときに、単語が存在する場合はその単語のインデックス位置を返し、存在しない場合は false を返すため、コードを次のように変更します。
コードは次のとおりです | コードをコピー |
if(strpos($title , $keyword ) == 0) { 「正しい」をエコー; } else if(strpos($title , $keyword ) == false) { 「エラー」をエコー; } 出力: 正しい |
なぜまた間違っているのですか? PHP では、変数が 0 の場合、その変数は false とも「等しい」ことがわかります。では、0 と false をどのように区別するのでしょうか。実際は非常に簡単で、コードを再度変更するだけです:
コードは次のとおりです | コードをコピー |
if(strpos($title , $keyword ) === 0) { 「正しい」をエコー; } else if(strpos($title , $keyword ) === false) { 「エラー」をエコー; } 出力: エラー |
例
コードは次のとおりです | コードをコピー |
/* |
false も 0 に等しい場合が多いです。たとえば、返したい値に 0 が含まれている場合は、数値のクエリに注意する必要があります。=== を使用して、それらが完全に等しいかどうかを判断できます。
PHP には、変数の型を取得する gettype() 関数があります。 === 演算子を使用できます (等号が 3 つあります)。 == 演算子との違いは、この演算子はデータの値と型の両方を比較することです。
終了条件に異なる変数タイプが含まれる場合は、=== 演算子と !== 演算子を使用して強力な型チェックを実行することが重要です。