(1)
<?php
if($a = 100 && $b = 200 ){
var_dump($a);
var_dump($b);
}
if($a = (100 && $b = 200) ){
var_dump($a);
var_dump($b);
}
if($a = (100 && 200) ){
var_dump($a);
var_dump($b);
}
if($a = true ){
var_dump($a);
var_dump($b);
}
解析:
1.&& 优先于=
2.&& 具有短路作用,它在运行的时候先计算左值,如果左值为ture,再计算右值。如果左值为false,则不计算右值
3.100表示true,需要计算右值,200赋值给b, 100 && 200 结果为true; 最后赋值给a;
输出结果:
bool(true)
int(200)
练习题:
if($a = 100 && $b = false ){
var_dump($a);
var_dump($b);
}
var_dump($a);
var_dump($b);
输出:
bool(false)
bool(false)
(2)
$a = 3;
$b = 5;
if ($a = 5 || $b = 7) {
var_dump($a);
var_dump($b);
$a++;
$b++;
var_dump($a);
var_dump($b);
}
解析:
1.|| 同样具有短路功能 当左侧的值为true是,右边的表达式是不运行的。
如题,b=7不运行,表达式可以化简为 a = true。
$a ++ 输出 ture ++ 还是 true;
输出结果:
bool(true)
int(5)
bool(true)
int(6)
练习题:
$a = 3;
$b = 5;
if ($a = '0' || $b = 7) {
var_dump($a);
var_dump($b);
$a++;
$b++;
var_dump($a);
var_dump($b);
}
输出
bool(true)
int(7)
bool(true)
int(8)