繁体   English   中英

如何将if语句转换为三元运算符?

[英]How can I convert this if else statement into ternary operator?

我有一段代码,我想将其转换为三元运算符。 有人可以帮忙吗? 它有1 if和2 else if条件,所以我在转换它时遇到了麻烦。 这是我的代码。

if ($this->session->data['desired_service']==1){
    echo 'Home Delivery';
} else if ($this->session->data['desired_service']==2){
    echo 'Take Away';
} else if ($this->session->data['desired_service']==3){
    echo 'DinIN';
}

这是我到目前为止使用的代码。

$service = ( $this->session->data['desired_service']== 1 ) ? "Home Delivery" : ( $this->session->data['desired_service'] == 2 ) ? "Take Away" : ( $this->session->data['desired_service'] == 3 ) ? "DinIN";

但这给了我一个语法错误。

这不是何时使用三元运算符的好例子。 就个人而言,查看您的数据-我将使用switch语句,因为它将更易于阅读和添加更多选项。

switch($this->session->data['desired_service']){

    case '1':
        $service = "Home Delivery";
        break;

    case '2':
        $service = "Take Away";
        break;

    case '3':
        $service = "DinIN";
        break;

}
echo ($this->session->data['desired_service'] == 3) ? 'DinIN' : (($this->session->data['desired_service']==1) ? 'Home Delivery' : ($this->session->data['desired_service'] == 2) ? 'Take Away' : '');

说明:

使用嵌套的三元运算符。

If variable equal to 3, print 'DinIN'    
else : two cases:
if 1 : Home Delivery
else : Take Away

演示:

如果值为1

如果值为2

如果值为3

另一种解决方案

使用预定义的数组:

获取数组中的所有选项并添加

1,2和3作为键。

使用isset和变量检查数组。

如果已设置,请打印出来,否则为空白。

目的解决了。

<?php
$arr = array();
$arr[1] = 'Home Delivery';
$arr[2] = 'Take Away';
$arr[3] = 'DinIN';
echo isset($arr[$this->session->data['desired_service']]) ? $arr[$this->session->data['desired_service']] : '';
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM