优化if-else条件

时间:2013-01-22 15:21:35

标签: php if-statement

假设有两个数组$a, $b。在任何给定点,至少其中一个不是空的或两个都不是空的。

如何优化以下条件

if(!$a)
{
  #TASK A
}
if(!b)
{
  #TASK B
}

if ($a['item']<$b['item'])
{
   #TASK A
}
else
{
  #TASK B
}

我不希望任务A和B在程序中重复两次。

3 个答案:

答案 0 :(得分:3)

if(!$a || ($b && ($a['item'] < $b['item']))){
// task A
}
else{
// task B
}

答案 1 :(得分:1)

if(!$a || ($b && ($a['item'] < $b['item']))){
  // task A

}elseif(!$b || ($a && ($a['item'] >= $b['item']))){
  // task B
}

如果可能未设置变量,请使用empty()isset()

答案 2 :(得分:0)

这可行,但可能不是最佳选择。但代码并不是很清楚。 TaskA和TaskB是否修改$ a和$ b?

$aDone = false; 
$bDone = false;

if(!$a)
{
  #TASK A
  $aDone = true; 
}
if(!b)
{
  #TASK B
  $bDone = true;
}

if ($a['item'] < $b['item'])
{
   if (!$aDone)
   {
      #TASK A
   }
}
else 
{
   if (!$bDone)
   {
     #TASK B
   }
}