2012-04-07 44 views
3

正如在标题中,函数之前的感叹号真的意味着什么PHP?PHP中的函数真的意味着什么真正的意思PHP


例如是以下语句:

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

与此相同:

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

或该:

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


任何澄清,将不胜感激

+0

这意味着如果它不等于或结果是错误的。这是一个简短的编写代码的方法 – 2012-04-07 07:43:25

+0

@Radu也许我的问题还不够清楚,但我在问是否!在函数检查类型之前。 – n1te 2012-04-07 07:52:28

回答

14

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

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

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

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

例如...

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

!!诀窍是在语言得心应手没有(bool)演员。通过翻转一个值两次,你就可以得到原始值的布尔版本。

+0

谢谢,这是我正在寻找的澄清 – n1te 2012-04-07 07:49:16

+0

@alex,你是怎么知道它强制布尔如果需要?文档对此有何意义? http://www.php.net/manual/en/language.operators.logical.php – Pacerier 2013-08-07 16:44:08

+0

@Pacerier它说*如果$ a不是真则为真* – alex 2013-08-07 21:49:40

0

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

+0

..并感谢您的赞赏。我想在这里帮忙。我的回答不对你有意义吗? – 2012-04-07 07:49:35

+0

你的回答很好,但亚历克斯的回答让我更容易理解。顺便说一句。这不是我投票给你的。 – n1te 2012-04-07 07:56:04

+0

不,我在评论另一条评论,对不起。他在写完这些之后删除了他。 – 2012-04-07 07:58:43