2012-04-07 27 views
3

タイトルのように、PHPの関数の前に感嘆符は本当に何を意味しますか?例えばPHPで関数の前に感嘆符が実際に何を意味するのですか


次の文である。

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

これと同じ:

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

又はこれ:

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


任意の明確化は、それが型をチェックしません==比較であるので、それは同じだ...

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

機能の前 !
+0

これは、equallでないか結果がfalseであることを意味します。それはコードを書くの短い方法です –

+0

@ Rad私の質問が十分ではなかったかもしれないが、私は尋ねていたかどうか!関数が型をチェックする前に。 – n1te

答えて

14

と同じであると認識されるであろう。

これは、否定単項演算子と呼ばれています。それはフリップ値のブール値(必要に応じてブールに強制)です。例えば

...

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

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

+0

ありがとう、これは私が探していた説明です – n1te

+0

@alex、もしあなたがそれが真実であることを知っていましたか?ドキュメントはそれについての意味がありましたか? http://www.php.net/manual/en/language.operators.logical.php – Pacerier

+0

@Pacerier $ aがTRUEでなければ* TRUEと表示されます* – alex

0

!それは私が思う2番目の比較と同じですので、値の比較に動作します。だから! false、0、nullをfalseとしてキャッチし、それらはあなたが見ているのと同じ型ではありません。私はいつもtrim()!= ""を使って文字列を比較しているので、それは例外かもしれません。私はそれについて知らない。

+0

..そして感謝のためにありがとう。私はここで助けようとしています。私の答えはあなたに理にかなっていないのですか? –

+0

あなたの答えはよかったですが、アレックスの答えはわかりやすいものでした。 Btw。あなたに投票したのは私ではありませんでした。 – n1te

+0

いいえ、私は別のコメントにコメントしていました、ごめんなさい。彼は私がこれを書いた後に削除した。 –

関連する問題