手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

PHP细节之&&和and

首页 > PHP >

本文来自冰山上的播客:http://xinsync.xju.edu.cn/index.php/archives/4476
还是值得记录一下,虽然效果一样,但正因为优先级的不同,导致结果可能会和预料中的值有偏差,虽然实际应用中不太用得到但,看看还是好的
原文:

PHP中&&和and都是逻辑运算符,且功能也是完全一样的。如果你不了解它俩的区别,你可能会留下很不容易发现的BUG。仔细看下面的代码片段(注释是执行结果):

<?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

这里最让人感到奇怪的就是为什么$rt1成了FALSE,而$rt2却是TRUE。其实这是PHP优先级在作怪。从文档中我们看到,赋值符号”=”的优先级低于逻辑与符号”&&”,但高于逻辑与符号”and”(也就是&& > = > and)。也就是说:

$rt1 = $true && $false;
$rt2 = $true and $false;

在PHP看来其实是:

$rt1 = ($true && $false);
($rt2 = $true) and $false;

这样就容易解释为什么会有那样的结果了。那现在你知道下面两句的结果了吗?

var_dump($rt1 = $true && $false);
var_dump($rt2 = $true and $false);

参考资料:
PHP Operator Precedence
PHP Logical Operators




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: php, 语法

« 上一篇 | 下一篇 »

只显示10条记录相关文章

快速生成目录树 (浏览: 48480, 评论: 7)
8年了。。。我的能力还停留在写留言本的技术能力上。。。。 (浏览: 45253, 评论: 3)
PHP的XSS攻击过滤函数 (浏览: 44384, 评论: 2)
PHP中Eval的作用 (浏览: 43226, 评论: 4)
PHP常见错误(二) (浏览: 41515, 评论: 1)
PHP sendmail (浏览: 39364, 评论: 7)
Imagick DLL (浏览: 34733, 评论: 6)
何为RBAC (浏览: 31358, 评论: 4)
PHP 技巧:file_get_contents的超时处理 (浏览: 31336, 评论: 0)
主键和外键的设计原则 (浏览: 31269, 评论: 1)

1条记录访客评论

国产的永久,xixi

Post by 北京时间 on 2009, April 7, 8:51 PM 引用此文发表评论 #1

别买了,买辆高级一点的自行车吧

Post by 卡通服装 on 2009, April 2, 11:51 AM 引用此文发表评论 #2

...... T_T

Post by walker on 2009, April 1, 8:40 PM 引用此文发表评论 #3

说得人家也心痒痒的
于是借此地同问

Post by watermoon on 2009, April 1, 4:42 PM 引用此文发表评论 #4

忘记说谢谢了:)

Post by phones on 2009, April 1, 1:29 PM 引用此文发表评论 #5

给你推荐一个网站,新车评网 :www.xincheping.com 我是里面的前程序员,因为自己创业所以出来了,我敢保证里面的车评还是很客观的,基本上所有的文章都是网站编辑自己原创的,不像别的汽车网站上面的文章都是软文或是厂家的公关稿,如果老大觉得我的推荐有帮助,请赞助一个有情链接给我, 网站名称: chinese cell phones 网址:www.chinese-cell-phones.com   (屏蔽浏览器中文用户)

Post by phones on 2009, April 1, 1:26 PM 引用此文发表评论 #6


发表评论

评论内容 (必填):