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

PHP echo未正常输出文本,疑似常量问题?代码是否故障?

问题原因:PHP运算符优先级导致字符串被意外计算

哈哈,这个问题我之前也踩过坑!根本不是常量的锅,纯粹是PHP运算符优先级在搞怪~

为什么会出现这种情况?

在PHP里,加法运算符(+)的优先级比字符串连接运算符(.)要高。这意味着你的代码会先执行所有的数字加法运算,而不是按照你预期的顺序先拼接字符串。

拿你代码里的第一个片段举例:

'rsi_color_by_number '.$i+$di

PHP会先计算$i + $di,然后把前面的字符串'rsi_color_by_number '转换成数字(因为字符串开头不是有效数字,会被强制转成0),最终变成0 + ($i+$di)——前面的文本直接“消失”了。

后面的>'.$i+$di和<'. $i+$di+1也是同样的逻辑,最终只剩下数字运算的结果,加上最后那段? black:#ffffff00,就出现了你看到的1? black:#ffffff00。

修复方案:用括号明确运算顺序

只需要把所有的数字运算部分用括号包起来,强制PHP先计算数字,再和字符串拼接就可以了:

echo 'rsi_color_by_number '.($i+$di).' = rsicoloredbackground >'.($i+$di) .' and rsicoloredbackground <'. ($i+$di+1) .'? black:#ffffff00 \n';

更直观的测试例子

你可以跑一下这段代码感受下差异:

$i = 0;
$di = 1;
// 错误写法
echo 'rsi_color_by_number '.$i+$di.' = ...'; // 输出 1 = ...
// 正确写法
echo 'rsi_color_by_number '.($i+$di).' = ...'; // 输出 rsi_color_by_number 1 = ...

内容的提问来源于stack exchange,提问作者Pepe Yáñez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:56:28