Php不回显文本。看起来像一个常数?这个坏了吗?

Php不回显文本。看起来像一个常数?这个坏了吗?,php,Php,这是我在使用php时遇到的最奇怪的事情 这是代码源代码: echo 'rsi_color_by_number '.$i+$di.' = rsicoloredbackground >'.$i+$di .' and rsicoloredbackground <'. $i+$di+1 ."? black:#ffffff00 \n"; 如果$i和$di是字符串,请尝试以下操作: echo 'rsi_color_by_number '.$i.$di.' = rsicoloredbackgro

这是我在使用php时遇到的最奇怪的事情

这是代码源代码:

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

如果$i和$di是字符串,请尝试以下操作:

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


echo "rsi_color_by_number {$num} = rsicoloredbackground > {$num} and rsicoloredbackground < ". (int)$num + 1 . "? black:#ffffff00 \n";

问题在于运算符优先级
+
具有相同的优先级和左关联性,因此

'string' . $i + $di . 'string2'
被视为

(('string' . $i) + $di) . 'string2'
这将尝试使用
“string”$i
作为一个数字,并将其添加到
$di

可以使用显式括号解决此问题:

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

为什么+?不应该$i+$di-->$i.$di这些是数字吗?试着只回显变量你确定它们不是空的吗?请提供更多信息谢谢大家。我是如此的生锈,这是完全有意义的,它现在正在工作。我很害怕,我心爱的php已经破坏了我,但不,我现在可以清楚地看到。=)使用
时,您的代码具有相同的优先级问题。(int)$num+1。
。另外,这里也不需要使用
(int)
,因为
$num
是一个整数。事实上,您不需要
(int)
任何地方,
+
将其参数转换为数字。“数字”;但显然不是整数,他用它来表示颜色代码;所以是的,你需要(int);因为他们可以添加为浮动(默认)。你能看到他的代码的其余部分吗?我也是。这就是为什么。让他相信,分数一般不是偶然发生的。没有生成这样的颜色代码的代码会使用浮动。
(('string' . $i) + $di) . 'string2'
echo 'rsi_color_by_number '.($i+$di).' = rsicoloredbackground >'.($i+$di) .' and rsicoloredbackground <'. ($i+$di+1) ."? black:#ffffff00 \n";
$newi = $i + $di;
echo 'rsi_color_by_number '.$newi.' = rsicoloredbackground >'.$newi.' and rsicoloredbackground <'. ($newi+1) ."? black:#ffffff00 \n";