2016-01-06 80 views
-1

我有多个if语句来检查四个复选框的值。但是我看到我的代码不好,并且在每个if语句中都包含重复的代码。多个php if语句在一个三元运算符中

我知道使用一个if语句条件的三元运算符。但我想在一个三元运算符下面放置我的代码。我怎样才能做到这一点?

信息:三元操作规范使用condition ? action_if_true: action_if_false;

if (!empty($item->divideto_2)) { 
    $col = 6; 
    $divide_to = 12/$col; 
} 
if (!empty($item->divideto_3)) { 
    $col = 4; 
    $divide_to = 12/$col; 
} 
if (!empty($item->divideto_4)) { 
    $col = 3; 
    $divide_to = 12/$col; 
} 
if (!empty($item->divideto_6)) { 
    $col = 2; 
    $divide_to = 12/$col; 
} 
+4

我不会推荐三元运算符把所有这些放在一行中。你会串起多个三元组,它会变得太复杂。相反,如果要减少检查次数,请使用else。 – aynber

+0

除了嵌套的三元陈述令人困惑,难以理解和[高于一切] *不可维护*;嵌套的三元组需要替换嵌套的if/else语句,而不是你自己的。 – Sammitch

+0

如果你不喜欢'if',你可以尝试'switch':D – Andrew

回答

0

你可以做这样的:

$col = 0; 
$divide_to = 12/((! empty($item->divideto_2)) 
        ? ($col = 6) 
        : (! empty($item->divideto_3)) 
         ? ($col = 4) 
         : (! empty($item->divideto_4)) 
          ? ($col = 3) 
          : (! empty($item->divideto_6)) 
           ? ($col = 2) 
           : $col); 

但是,以便更好地观察,用另一种形式。

+1

谢谢你这是工作 –

+0

不客气:) – Allan