在PHP中,函数前面的感叹号到底意味着什么


What does an exclamation mark before a function really mean in PHP

就像标题中一样,函数前面的感叹号在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)强制转换的语言中非常方便。通过翻转一个值两次,可以获得其原始值的布尔版本。

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