第一种
$a = 1;
$b = 2;
$c = 3;
$a && $b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
结果是:
a:1
b:3
c:3
第二种
$a = 0;
$b = 2;
$c = 3;
$a && $b = $c;
echo "a:$a";
echo "b:$b";
echo "c:$c";
结果是:
a:0
b:2
c:3
解析:
1: && 和赋值运算符“=”的优先级是&&优先级高,但是加红的写法中并不是
a和
a
和
b先做与运算然后 =
c,这么理解相当于1=
c
,
这
么
理
解
相
当
于
1
=
c, 而 1=
c这样的写法是错误的2:这种另类的写法正确的理解方式为:if(
c
这
样
的
写
法
是
错
误
的
2
:
这
种
另
类
的
写
法
正
确
的
理
解
方
式
为
:
i
f
(
a){
b=
b
=
c},即如果
a为真,则执行赋值语句
a
为
真
,
则
执
行
赋
值
语
句
b = $c;否则不执行此赋值语句,这样结果不难理解