2013-01-22 120 views
3

假設有兩個數組$a, $b。在任何一點上,至少有一個不是空的,或者兩個都不是空的。優化if-else條件

如何我優化以下條件

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

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

我不想任務A和在程序中要被重複兩次乙。

+2

存在,或者是空的? –

+0

我的意思是空的。編輯問題 – shanks

+1

使用兩個函數? 'task_a();'和'task_b():'? – nickb

回答

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

+1更簡潔的回答:) –

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

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

如果變量不能設置,使用empty()isset()

+0

感謝剛剛達到相同條件的作品:) – shanks

+0

第二個'elseif'是多餘的。第一個條件已經涵蓋了任務a的斷言;因此,邏輯上,不是(任務a)==任務b。 –

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 
    } 
}