PHPは緩やかな型付け言語です。 ==
が両方の値に一致し、===
が値と値のデータ型とを一致させます。条件の上
if (8 == '8') // returns true
はちょうどTRUE
if (8 === '8') // returns false
にないデータ型が故にif
を評価値と一致し、この値の1つのチェック値とデータ型の両方が故に、このif
はFALSE
に評価します値とデータ型の両方をチェックする場合は===
を使用し、データ型ではない値のみを比較する必要がある場合は==
を使用します。文字列は、それがFALSE
を返します。見つからない場合は、あなたの場合は
、
stripos
は、文字列内のサブ文字列の位置を返します。
if (stripos($post_to_check->post_content, '[' . $shortcode) !== false)
文字列内のチェックサブ文字列上記のコードとサブ文字列が見つかった場合にのみTRUE
に評価され得ます。あなたは
if (stripos($post_to_check->post_content, '[' . $shortcode) != false)
とするとき、サブ文字列がif
は、サブ文字列がメインの文字列である場合でもFALSEと評価さ0
位置に見にそれを変更した場合 。 はその後、条件はこの
if (0 != false)
ようになり、0
が考慮されているため、あなたはこれが比較されますが!==
if (0 !== false)
を使用する必要が
FALSE
としてはFALSE
と評価されます値と両方の値のデータ型 値0
は整数型であり、false
は、したがって、データ型は、ここでは一致していないとの条件は、これらのcomparison operatorは一度これを確認する必要がありTRUE
PHPマニュアルページ状態となり、boolean
タイプです。
http://php.net/manual/en/language.operators.comparison.php – hakre
[参考文献 - この記号はPHPで何を意味していますか?](http://stackoverflow.com/questions/3737139)/reference-what-does-this-symbol-in-php) – hakre
@hakre実際にはそうではありません - なぜこの特定のケースで使用されているのかを説明していません –