You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中逻辑表达式赋值与直接判断结果差异的原因解析

PHP赋值与OR运算符优先级引发的变量值异常

问题场景

执行以下代码后,变量$test的值为false,无论直接输出还是通过if判断都不会触发预期输出:

$test = false OR false OR true;
if ($test) {
    echo "IT'S TRUE";
}

但直接将逻辑表达式作为if条件时,却能正常打印“IT'S TRUE”:

if (false OR false OR true) {
    echo "IT'S TRUE";
}

根本原因

PHP中赋值运算符=的优先级低于逻辑或运算符OR,这导致第一条赋值语句被PHP解析为:

($test = false) OR false OR true;

执行顺序是先将false赋值给$test,后续的OR运算结果不会覆盖$test的值——即使后面的逻辑运算结果为true,也不会改变已经完成的赋值操作。

解决方案

通过括号强制改变运算优先级,让PHP先计算逻辑表达式的结果,再赋值给变量:

$test = (false OR false OR true);
if ($test) {
    echo "IT'S TRUE"; // 此时会正常输出
}

内容的提问来源于stack exchange,提问作者Lomchat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 23:27:06