缺少if语句有错误

时间:2017-01-04 12:00:01

标签: php ternary-operator

我想简写if if语句,但我的代码编辑器显示有错误。有什么问题?

我原来的if语句

<?php
 if($shippingCost["ShippingCost"]['shipping_type'] == 'order_sum') {
    echo $this->Format->money($shippingCost["ShippingCost"]['value_to']);
 } else {
    echo number_format($shippingCost["ShippingCost"]['value_to']);
 }
?>

我的缺点版本

<?php
($shippingCost["ShippingCost"]['shipping_type'] == 'order_sum') ? //IDE error expected colon
echo $this->Format->money($shippingCost["ShippingCost"]['value_from']) : // IDE error expected semicolon
echo number_format($shippingCost["ShippingCost"]['value_from'])
?>

2 个答案:

答案 0 :(得分:1)

请注意echo没有任何返回类型。这就是为什么你应该使用print,或者在开头写回声。

<强> 1。在开头使用echo

echo ($shippingCost["ShippingCost"]['shipping_type'] == 'order_sum') ? 
    $this->Format->money($shippingCost["ShippingCost"]['value_from']) : 
    number_format($shippingCost["ShippingCost"]['value_from']);

<强> 2。使用print而不是echo

($shippingCost["ShippingCost"]['shipping_type'] == 'order_sum') ? 

print $this->Format->money($shippingCost["ShippingCost"]['value_from']) :    
print number_format($shippingCost["ShippingCost"]['value_from']);

答案 1 :(得分:1)

三元运算符是一个通用的短语if语句,它只是一种返回表达式的简单方法。在这种情况下,您只能在表达式上使用三元组,并从中提取echo

echo ($shippingCost["ShippingCost"]['shipping_type'] == 'order_sum') ?
      $this->Format->money($shippingCost["ShippingCost"]['value_from']) :
      number_format($shippingCost["ShippingCost"]['value_from']);