一、&&、and、||、or作为单独的表达式
1、&&、and示例
<?php
!
isset
($var1) && $var1 = 2;
echo
$var1;
!
isset
($var1) && $var1 = 2;
echo
$var1;
isset
($var1) && $var1 = 3;
echo
$var1;
!
isset
($var2) and $var2 = 2;
echo
$var2;
!
isset
($var2) and $var2 = 2;
echo
$var2;
isset
($var2) and $var2 = 3;
echo
$var2;
?>
输出结果:
224224
结论:如果&&/and左边表达式为真,右面表达式方可执行。
2、||、or示例
<?php
!
isset
($var1) || $var1 = 2;
echo
$var1;
!
isset
($var1) || $var1 = 3;
echo
$var1;
isset
($var1) || $var1 = 4;
echo
$var1;
!
isset
($var2) or $var2 = 2;
echo
$var2;
!
isset
($var2) or $var2 = 3;
echo
$var2;
isset
($var2) or $var2 = 4;
echo
$var2;
?>
输出结果:
Notice
: Undefined variable: var1 in
D:\Web Projects\test\and.php
on line
3
Notice : Undefined variable: var1 in D:\Web Projects\test\and.php on line 5
4
Notice : Undefined variable: var2 in D:\Web Projects\test\and.php on line 10
Notice : Undefined variable: var2 in D:\Web Projects\test\and.php on line 12
4
Notice : Undefined variable: var1 in D:\Web Projects\test\and.php on line 5
4
Notice : Undefined variable: var2 in D:\Web Projects\test\and.php on line 10
Notice : Undefined variable: var2 in D:\Web Projects\test\and.php on line 12
4
结论:如果||/or左边表达式为假,右面表达式方可执行。
二、&&、and、||、or表达式赋值给变量
1、&&、and
<?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
var_dump($rt1 = $true && $false);
//FALSE
var_dump($rt2 = $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;
2、||、or的情况与&&、and一样,自己写代码测试,再次不再赘述。