为什么这个 shorthand if 语句在长格式有效时返回 0?
Why is this shorthand if statement returning 0 when the long form works?
我有以下代码,其中我定义了一个值,但是当我尝试对其执行任何 shorthand 方程时,它 returns 0.
三元运算
$m = 1.10;
echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 : 'N/A' ) + ' %';
结果:
Markup Percentage : 0 %
标准操作。
$m = 1.10;
echo 'Markup Percentage : ';
if($m > 1) {
echo ($m * 100) - 100;
} else {
echo 'N/A';
}
echo ' %';
Markup Percentage : 10 %
如果不是很明显,三元运算的结果应该与标准运算的结果相同。我做错了什么或者这是 php 5.4 中的错误?
发生这种情况是因为错误的操作员。 .
用于连接,而不是 +
。试试 -
$m = 1.10;
echo 'Markup Percentage : ' . ( ($m > 1) ? (($m * 100) - 100) : 'N/A' ) . ' %';
但我建议在使用三元运算符时适当地对操作进行分组。不仅适用于三元,适用于所有运营商。理解优先级非常重要。
echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 : 'N/A' ) . ' %';
应该也可以。
这是因为您在没有 (
的情况下使用多重计算,所以他们搞砸了,另一个错误是您使用 +
符号代替 .
。
您可以像下面这样使用三元运算符:
$m = 1.10;
echo 'Markup Percentage : ' . ( ($m > 1) ? (($m * 100) - 100) : 'N/A' ) . ' %';
//OP: Markup Percentage : 10 %
我有以下代码,其中我定义了一个值,但是当我尝试对其执行任何 shorthand 方程时,它 returns 0.
三元运算
$m = 1.10;
echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 : 'N/A' ) + ' %';
结果:
Markup Percentage : 0 %
标准操作。
$m = 1.10;
echo 'Markup Percentage : ';
if($m > 1) {
echo ($m * 100) - 100;
} else {
echo 'N/A';
}
echo ' %';
Markup Percentage : 10 %
如果不是很明显,三元运算的结果应该与标准运算的结果相同。我做错了什么或者这是 php 5.4 中的错误?
发生这种情况是因为错误的操作员。 .
用于连接,而不是 +
。试试 -
$m = 1.10;
echo 'Markup Percentage : ' . ( ($m > 1) ? (($m * 100) - 100) : 'N/A' ) . ' %';
但我建议在使用三元运算符时适当地对操作进行分组。不仅适用于三元,适用于所有运营商。理解优先级非常重要。
echo 'Markup Percentage : ' . ( $m > 1 ? ($m * 100) - 100 : 'N/A' ) . ' %';
应该也可以。
这是因为您在没有 (
的情况下使用多重计算,所以他们搞砸了,另一个错误是您使用 +
符号代替 .
。
您可以像下面这样使用三元运算符:
$m = 1.10;
echo 'Markup Percentage : ' . ( ($m > 1) ? (($m * 100) - 100) : 'N/A' ) . ' %';
//OP: Markup Percentage : 10 %