PHP をいじってみると、true が 1 として返され、false が null として返されることがわかりました。
それは真実ではありません (しゃれは意図されていません)。PHP には、他の多くの言語と同様に、「真」と「偽」の値があり、他の値と同様にTRUE
、またはFALSE
他の値と比較した場合に動作します。
これは、PHP が弱い型付け (対強い型付け) を使用しているためです。異なるタイプの値を比較するときに自動的に変換されるため、最終的に同じタイプの 2 つの値を比較できます。echo TRUE;
PHP では、echo
常に文字列を出力します。しかし、ブール値を渡しましたecho
。これは、その仕事をする前に文字列に変換する必要があります。SoTRUE
は自動的に文字列に変換され"1"
、 whileFALSE
は に変換され""
ます。
=== 演算子はいつ使用しますか?
PHP が 2 つの等号演算子==
と===
. ===
比較している両方の値が単に「等しい」(または同等) だけでなく、同じ型であることを確認する場合に使用します。実際には:
echo 1 == TRUE; // echoes "1", because the number 1 is a truthy value
echo 1 === TRUE; // echoes "", because 1 and TRUE are not the same type (integer and boolean)
true または false を返す関数を作成する場合、それらを使用するためのベスト プラクティスは何ですか?
できる限り正確に、実際のブール値TRUE
またはを返しますFALSE
。is
典型的なケースは、 のように で始まる関数isValidInput
です。TRUE
通常、そのような関数は または のいずれかを返すと予想されますFALSE
。
一方、場合によっては、関数が「偽の」または「真実の」値を返すと便利です。たとえばstrpos
、ゼロの位置に部分文字列が見つかった場合は0
(int) を返しますが、文字列が見つからない場合はFALSE
(bool) を返します。そう:
$text = "The book is on the table";
echo (strpos($text, "The") == FALSE) ? "Not found" : "Found"; // echoes "Not found"
echo (strpos($text, "The") === FALSE) ? "Not found" : "Found"; // echoes "Found"