中国青基会

查看完整版本: PHP细节之&&和and

cckj 2009-3-21 21:21

PHP细节之&&和and

PHP中&&和and都是逻辑运算符,且功能也是完全一样的。如果你不了解它俩的区别,你可能会留下很不容易发现的BUG。仔细看下面的代码片段(注释是执行结果):[code]<?php
$true = TRUE;
$false = FALSE;
$rt1 = $true && $false;//$rt1:FALSE
$rt2 = $true and $false;//$rt2:TRUE

var_dump($rt1);//FALSE
var_dump($rt2);//TRUE
var_dump($true && $false);//FALSE
var_dump($true and $false);//FALSE[/code]这里最让人感到奇怪的就是为什么$rt1成了FALSE,而$rt2却是TRUE。其实这是PHP优先级在作怪。从文档中我们看到,赋值符号”=”的优先级低于逻辑与符号”&&”,但高于逻辑与符号”and”(也就是&& > = > and)。也就是说:[code]$rt1 = $true && $false;
$rt2 = $true and $false;[/code]在PHP看来其实是:[code]$rt1 = ($true && $false);
($rt2 = $true) and $false;[/code]这样就容易解释为什么会有那样的结果了。那现在你知道下面两句的结果了吗?[code]var_dump($rt1 = $true && $false);
var_dump($rt2 = $true and $false);[/code]

[b]参考资料:
[/b][url=http://cn2.php.net/manual/en/language.operators.precedence.php][color=#0000ff]PHP Operator Precedence[/color][/url]
[url=http://cn2.php.net/manual/en/language.operators.logical.php][color=#0000ff]PHP Logical Operators[/color][/url]
页: [1]
查看完整版本: PHP细节之&&和and
Baidu