6

タイトルにあるように、関数の前のエクスクラメーション マークは PHP で実際に何を意味するのでしょうか?


たとえば、次のステートメントがあります。

if (!stripos($haystack, $needle)) {}

これと同じ:

if (stripos($haystack, $needle) === FALSE) {}

またはこれ:

if (stripos($haystack, $needle) == FALSE) {}


明確化をいただければ幸いです

4

2 に答える 2

17

関数の!前にあるものは...と同じです。

if (stripos($haystack, $needle) == FALSE) {}

==型をチェックしない比較なので同じです。

これは否定単項演算子と呼ばれます。値のブール値を反転します (必要に応じてブール値に強制します)。

例えば...

! 0;    // True
! 1 ;   // False
! '';   // True
! true; // False
!! 0    // False 

この!!トリックは、(bool)キャストのない言語で便利です。値を 2 回反転すると、元の値のブール バージョンが得られます。

于 2012-04-07T07:42:32.053 に答える
0

! 値の比較で機能するので、2番目の比較と同じだと思います。なぜなら !false、0、null を false としてキャッチしますが、これらはご覧のとおりの型ではありません。文字列の比較には常に trim()!="" を使用しているため、 "" は例外かもしれません。私はそれについて知りません。

于 2012-04-07T07:44:14.910 に答える