2011-01-07 109 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