PHP-谁能解释一下php中if条件的运行原理?

PHP-谁能解释一下php中if条件的运行原理?

瑾兮 发布于 2017-04-18 字数 139 浏览 1224 回复 2

这两段代码,为什么结果不一样

$a=1;
if($a=3) {
$a++;
}
echo $a;//4

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

归属感 2017-10-13 2 楼

简单说下第二个:

if($a=10 || true){
$a++;
}

实际上是

if($a = (10 || true)){
//这里 $a 为true
$a++; //bool类型的值++ 或者 -- 不会强制转换为int,
}

echo $a; //直接输出bool,会进行类型转换,所以是1

原因就是 || 的优先级高于 = (赋值运算)

如果使用 or 而不是 || 的话,结果就是预期希望的值:

if($a = 10 or true){
$a++;
}
echo $a;

因为 or 的优先级 低于 赋值运算 的优先级;

更多优先级参考手册。

灵芸 2017-07-08 1 楼

if运行原理还需要说明吗,对的执行 不对的不执行。
你那个问题是运算符优先级的问题 和bool类型++结果问题
“||”优先级大于赋值运算符“=”
而逻辑运算结果是true或者false
所以$a=10 || true 得到的结果是$a = true;
就跟如下代码一样

 if($a = true){
$a++;
}