タイトルにあるように、関数の前のエクスクラメーション マークは PHP で実際に何を意味するのでしょうか?
たとえば、次のステートメントがあります。
if (!stripos($haystack, $needle)) {}
これと同じ:
if (stripos($haystack, $needle) === FALSE) {}
またはこれ:
if (stripos($haystack, $needle) == FALSE) {}
明確化をいただければ幸いです
関数の!
前にあるものは...と同じです。
if (stripos($haystack, $needle) == FALSE) {}
==
型をチェックしない比較なので同じです。
これは否定単項演算子と呼ばれます。値のブール値を反転します (必要に応じてブール値に強制します)。
例えば...
! 0; // True
! 1 ; // False
! ''; // True
! true; // False
!! 0 // False
この!!
トリックは、(bool)
キャストのない言語で便利です。値を 2 回反転すると、元の値のブール バージョンが得られます。
! 値の比較で機能するので、2番目の比較と同じだと思います。なぜなら !false、0、null を false としてキャッチしますが、これらはご覧のとおりの型ではありません。文字列の比較には常に trim()!="" を使用しているため、 "" は例外かもしれません。私はそれについて知りません。