3

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

如何优化以下条件

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

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

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

4

3 回答 3

3
if(!$a || ($b && ($a['item'] < $b['item']))){
// task A
}
else{
// task B
}
于 2013-01-22T15:34:22.673 回答
1
if(!$a || ($b && ($a['item'] < $b['item']))){
  // task A

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

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

于 2013-01-22T15:25:02.420 回答
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
   }
}
于 2013-01-22T15:31:21.843 回答