【问题标题】:How can I use if else if in this type of if else($var==2)? '' : '' [duplicate]在这种类型的 if else($var==2) 中如何使用 if else if? '' : '' [复制]
【发布时间】:2015-05-11 12:22:00
【问题描述】:

我可以在这种格式中使用多个 if else 吗?

$data->frm_status==1? "Incomplete" :"other" 

我尝试过不同的方法。像这样

$data->frm_status==1? "Incomplete" $data->frm_status==2 ?"Analysis Done":"other"

$data->frm_status==1? "Incomplete" ? $data->frm_status==2 ?"Analysis Done":"other"

这是错误。我无法在谷歌上搜索这个,因为我不知道这个语法的名称。

虽然我知道我可以用这个

if()
{
    //
}else if()
{
  // 
}else
{
   //
}

【问题讨论】:

  • "但这是错误"是什么?
  • 如果你有正确的语法,这对你来说是可读的吗?如果不是,则使用普通的if 语句。
  • 括号是你的朋友!请注意,ternary operator 是左关联的。
  • 谷歌上的“三元运算符”
  • 它被称为ternary operator,它与 if/then/else 语句相同。随意使用括号来控制求值的顺序。

标签: php if-statement


【解决方案1】:

三元运算符不是多个(else)ifs 的好选择:

echo $data->frm_status == 1 ? "Incomplete" : ($data->frm_status == 2 ? "Analysis Done" : "other");

更好的方法是:

if ($data->frm_status == 1) {
    echo 'Incomplete';
} elseif ($data->frm_status == 2) {
    echo 'Analysis Done';
} else {
    echo 'other';
}

switch:

switch ($data->frm_status) {
    case 1:
        'Incomplete';
        break;
    case 2:
        'Analysis Done';
        break;
    default: 
        'Other';
        break;
}

【讨论】:

  • 您的回答有效。但是我可以知道三元运算符和嵌套 if else if 之间的区别吗??
  • @ris: 相同,没有不同,只是其他语法。三元运算符更适合像 echo $a == 2 ? 'true' : 'false'if-elsif-else 这样的短结构,对于更长的结构。两种情况下的结果是相同的。换句话说,三元运算符是if 条件的替代语法。
  • 好的,谢谢你的回答。
  • 不完全一样。如果满足某个条件,if 语句就会执行代码。正如您在此答案中看到的那样,回显了一个值。三元表达式是计算结果为值的表达式。它本身什么也不做,但您可以分配或使用该值来做某事。出于这个原因,我也认为switch 声明是错误的。它包含不做任何事情的松散字符串。
猜你喜欢
  • 2018-03-14
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2019-04-25
  • 1970-01-01
相关资源
最近更新 更多