2011-01-07 3 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 ($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

'($モード=="

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

に変換するようですmin "|| $ mode ==" between ")'は読みやすく、そうでなければ '(($ mode_max && $ mode_min)||($ mo de_max && $ mode_min)) '私は正しいのですか? – Dot

+0

確かに、完全に動作します。質問に解決策を追加しました(今度は最大値に最適化されていますようお願い致します。) – Dot

+0

@Swizzh最終回答( '!$ mod_min &&!$ mod_max') – jeroen

関連する問題