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)演员表的语言中很方便。通过翻转一个值两次,您可以获得其原始值的布尔版本。

于 2012-04-07T07:42:32.053 回答
0

!将进行价值比较,所以它与我认为的第二个比较相同。因为 !会将 false、0、null 捕获为 false,并且它们与您看到的类型不同。"" 可能是一个例外,因为我总是使用 trim()!="" 来比较字符串。我不知道那件事。

于 2012-04-07T07:44:14.910 回答