为什么这个简写if语句在长格式工作时返回0?

Kra*_*ime 1 php ternary-operator

我有以下代码,其中我有一个定义的值,但当我尝试对它做任何简写方程时,它返回0.

三元运作

$m = 1.10;
echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 :  'N/A' ) + ' %';
Run Code Online (Sandbox Code Playgroud)

结果:

加价百​​分比:0%


标准操作.

$m = 1.10;

echo 'Markup Percentage : ';    
if($m > 1) {
   echo ($m * 100) - 100;
} else {
   echo 'N/A';
}
echo ' %';
Run Code Online (Sandbox Code Playgroud)

加价百​​分比:10%


如果不明显,三元操作的结果应与标准操作相同.我做错了什么或者这是php 5.4中的一个错误?

Sou*_*ose 5

这是因为错误的操作员而发生的..用于连接,而不是+.尝试 -

$m = 1.10;
echo 'Markup Percentage : ' . ( ($m > 1) ? (($m * 100) - 100) :  'N/A' ) . ' %';
Run Code Online (Sandbox Code Playgroud)

但我建议在使用三元运算符时正确分组操作.对于所有运营商而言,不仅适用于三元.理解优先级非常重要.

echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 :  'N/A' ) . ' %';
Run Code Online (Sandbox Code Playgroud)

还应该工作.