2011-01-07 106 views
0

我知道這個代碼位不太符合最佳編碼實踐,並且正在尋求改進它,任何想法?優化PHP代碼(試圖確定最小/最大/大小寫)

if ($query['date_min'] != _get_date_today()) 
    $mode_min = true; 
if ($query['date_max'] != _get_date_today()) 
    $mode_max = true; 

if ($mode_max && $mode_min) 
    $mode = "between"; 
elseif ($mode_max && !$mode_min) 
    $mode = "max"; 
elseif (!$mode_max && $mode_min) 
    $mode = "min"; 
else 
    return; 

if ($mode == "min" || $mode == "between") { 
    $command_min = "A"; 
} 
if ($mode == "max" || $mode == "between") { 
    $command_max = "B"; 
} 
if ($mode == "between") { 
    $command = $command_min . " AND " . $command_max; 
} else { 
    if ($mode == "min") 
     $command = $command_min; 
    if ($mode == "max") 
     $command = $command_max; 
} 

echo $command; 

解決方案:

$mode_min = ($query['date_min'] != _get_date_today()); 
$mode_max = ($query['date_max'] != _get_date_today()); 

if ($mode_min){ 
    $command_min = "A"; 
} 
if ($mode_max) { 
    $command_max = "B"; 
} 
if ($mode_min && $mode_max) { 
    $command = $command_min . " AND " . $command_max; 
} else { 
    if ($mode_min) 
     $command = $command_min; 
    if ($mode_max) 
     $command = $command_max; 
} 

回答

2

技術上的變量是不確定的,如果條件不滿足,所以我只想用:

$mod_min = ($query['date_min'] != _get_date_today()); 
$mod_max = ($query['date_max'] != _get_date_today()); 

除此之外,你爲什麼定義$mode變量,你需要它在別的地方嗎?如果沒有,您可以在最後一組if報表中使用$mod_min$mod_max

例如:

if ($mode == "min" || $mode == "between") 

似乎翻譯爲:

if ($mod_min) 

編輯:你最近更新的編輯:

$command_min = "A"; 
$command_max = "B"; 

if ($mode_min && $mode_max) { 
    $command = $command_min . " AND " . $command_max; 
} 
elseif ($mode_min){ 
    $command = $command_min; 
} 
elseif ($mode_max) { 
    $command = $command_max; 
} else { 
    return; 
} 
+0

`($模式==「 min「|| $ mode ==」between「)`更具可讀性,否則我必須寫'((!$ mode_max && $ mode_min)||($ mo de_max && $ mode_min))「我是否正確? – Dot 2011-01-07 15:54:46