函数之前的感叹号在PHP中真正意味着什么

n1t*_*1te 4 php boolean function

就像在标题中一样,函数之前的感叹号在PHP中真正意味着什么?


例如,以下语句:

if (!stripos($haystack, $needle)) {}
Run Code Online (Sandbox Code Playgroud)

与此相同:

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

或这个:

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


任何澄清将不胜感激

ale*_*lex 17

!之前的功能是一样的...

if (stripos($haystack, $needle) == FALSE) {}
Run Code Online (Sandbox Code Playgroud)

它是相同的,因为它是一个==不检查类型的比较.

它被称为否定一元运算符.它会翻转一个值的布尔值(强制转换为布尔值,如果需要).

例如...

! 0;    // True
! 1 ;   // False
! '';   // True
! true; // False
!! 0    // False 
Run Code Online (Sandbox Code Playgroud)

这个!!技巧在没有(bool)演员表的语言中很方便.通过翻转两次值,您将获得其原始值的布尔版本.