PHP短路运算符

<?php
$a = 5; $b = 20;
if ($a = 10 || $b = 7) {
$a++;
$b++;
}
echo $a,"\n","",$b; // 1 21
// 递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。
var_dump($a); // boolean true $a++ 是不能进行加法运算的
var_dump($b); // int 21
var_dump($a = $a+1); // 2

// 下面的 foo() 不会被调用,因为它们被运算符“短路”了。
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());

// "||" 的优先级比 "or" 高
$e = false || true; // $e 被赋值为 (false || true),结果为 true
$f = false or true; // $f 被赋值为 false [注:"=" 的优先级比 "or" 高]
var_dump($e, $f);

// "&&" 的优先级比 "and" 高
$g = true && false; // $g 被赋值为 (true && false),结果为 false
$h = true and false; // $h 被赋值为 true [注:"=" 的优先级比 "and" 高]
var_dump($g, $h);

Reference: PHP短路运算符

发表评论

电子邮件地址不会被公开。 必填项已用*标注