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

时间:2012-04-07 07:40:05

标签: php function boolean

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


例如,以下声明:

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

与此相同:

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

或者这个:

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


任何澄清将不胜感激

2 个答案:

答案 0 :(得分:15)

该函数前面的!与......

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

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

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

例如......

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

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

答案 1 :(得分:0)

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