PHP &&和and,||和or

来源:互联网 发布:windows 1709 编辑:程序博客网 时间:2024/04/27 14:31
一、&&、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

结论:如果||/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一样,自己写代码测试,再次不再赘述。


0 0
原创粉丝点击