Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

PHP的低优先级逻辑运算符

  写惯了JavaScript的程序员肯定对JavaScript的逻辑运算符大爱,因为它实在太方便了。可以省去很多不必要的判断语句。比如最常用的“或”运算在JavaScript中就可以这样用。 document.onclick=function(e){
  var e=e||event,o=e.target||e.srcElement;
  alert(o.tagName);
};
  这是一个获取触发对象的例子,由于浏览器兼容性问题,需要做很多判断才能获取到。而使用或运算符就可以直接获取到想要的对象。而在PHP中,虽然没这么方便,但是我们也可以做类似的事情。 $id=$_GET['id'] or $id=1;   这个代码是获取URL参数中的id字段,如果不存在则得到1。这就是使用了or这个运算符的优先级比赋值运算符低的原理完成的。而且PHP提供的这个低优先级运算可不止or,还有and和xor。把这些接合起来使用就可以做出更漂亮的表达式。 $is_admin and $name=$username or $name=$ip;   这个代码非常好用,判断是否是管理员,如果是则使用用户名作为显示名。如果不是管理员,或者即使是管理员,但是用户名不存在。那么则使用ip作为显示名。这个代码如果换成判断语句就需要麻烦的判断 if($is_admin&&$username)
  $name=$username;
else $name=$ip;
  在JavaScript中还有逗号运算符也是非常好用的,我个人的代码风格不喜欢使用代码块,因此在JavaScript中经常会使用逗号。比如 var x=1,a,b,c,d;
if(x)a=1,b=0,c=6,d=3;
  我通常会像这样把一些简单的表达式用逗号隔开写在一起,避免使用大括号占代码行数。在PHP中逗号运算符可不如JavaScript中这么方便,它不能随意使用,因此我们也可以使用逻辑运算符来替代。但是使用逻辑运算符毕竟消耗资源,所以如果代码需要高效的还是建议使用代码块的写法,而想上面这样的代码只执行一次,那就无所谓用不用代码块了。在PHP中可以这样写 $x=1;
if($x)$a=1 xor $b=0 xor $c=6 xor $d=3;
  异或这个运算符无论左边的值是什么都需要获取右边的值,所以它左右两边的表达式都会被运行到。上面的这个程序只是个例子,也许举的还不太好,不过xor这个运算符两边都能被执行到的特性在代码中迟早能用上的。
网名:
3.80.32.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^