PHPでプレーした後、私は真が1とヌルとして偽として返されることを発見しました。
これは当てはまりません。PHPは他の多くの言語と同様に、「真実」と「偽」の値を持ち、TRUE
またはFALSE
のように振る舞います。
PHPは弱い型指定を使用しています(対strong typing)。それは、それらを比較するときに異なるタイプの値を自動的に変換するので、最終的に同じタイプの2つの値を比較することができます。 echo TRUE;
(PHP)の場合、echo
は常に文字列を出力します。しかし、あなたはそれをブール値に渡しました。それはecho
がその仕事をする前に文字列に変換されなければなりません。したがってTRUE
は自動的に文字列"1"
に変換され、FALSE
は""
に変換されます。
===演算子はいつ使用しますか?
この弱い、または緩い、タイピングがPHPは、2つの等価演算子、==
と===
を使用する理由です。比較している値が「等しい」(または同等のもの)ではなく、同じタイプであることを確認したい場合は、===
を使用します。実際には:trueまたはfalseを返す関数を書くとき
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
を返すことができます。典型的なケースは、という接頭辞を付けた関数です(isValidInput
など)。そのような関数は通常、TRUE
またはFALSE
のいずれかを返すと予想しています。
一方、場合によっては関数が「偽」または「真実」の値を返すようにすると便利です。たとえば、strpos
とします。文字列が見つからない場合は、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"
少なくとも4つの質問をしました。あなたの_real_質問は何ですか? – Madbreaks
「PHP」と「ベストプラクティス」は、同じ文章でめったに聞かれない言葉です。 –
@GeorgeCummins初心者にも当てはまります。どの言語にも同じです。 – Madbreaks