假设我们有两个变量,$a和$b,当$a为真$b为假时输出$a;当$b为真$a为假时输出$b。我们会如何写代码呢?第一反应是if结构:
$a='';
$b=1;
if($a)
echo $a;
else if($b)
echo $b;
?>
那么,我们用或运算如何实现呢?那就简单多了:
$a='';
$b=1;
echo $a|$b;
?>
为什么可以这样,那么首先要介绍一些或运算。或运算是位运算的一种,运算符为|,如:
$a | $b
将把 $a 或者 $b 中为 1 的位设为 1。具体是以二进制的形式运算,我们以4位二进制举例,
假设$a=”;$b=1;
那么$a的4位二进制代码为:0000,php中空、null、false等对应的二进制代码都是0,可以用ord函数检验:
echo ord('');
注意空格的二进制码不是0,所以
echo ord(' ');
得到的结果不是0而是32。
$b的4位二进制代码为0001。下面进行或运算:
$a:0000
$b:0001
把 $a 或者 $b 中为 1 的位设为 1,得到的结果是0001。大家发现了,$a或者$b只要有一个的二进制码是0,那么或运算后得到的结果就是那个不为0的数,所以
echo $a|$b;
可以达到我们的判断目的。
注意:当两个变量都为空时,不会有任何输出;否则当只有一个变量为空,另一个变量为null,false,0中的任意一个时,或运算的结果都将是0。