2017-10-21 114 views
-5

我需要一些幫助和解釋如何簡化我的php代碼。如何簡化這個php代碼

它正在工作,但似乎很少重複代碼。

基本上我想檢查一下當店鋪關閉時顯示預格式化文本的日期和時間以及桌面或移動設備上的不同文本。

感謝您的閱讀。

<?php 
    include 'Mobile_Detect.php'; 
    $detect = new Mobile_Detect(); 
    //Get time 
    $hour = date("H", mktime(date("H"))); 
    $day = date("D"); 

    if($day == 'Mon' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }  
    elseif($day == 'Tue' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }       
    elseif($day == 'Wed' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }     
    elseif($day == 'Thu' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }      
    elseif($day == 'Fri' && ($hour >= 6 && $hour < 22)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }    
    elseif($day == 'Sat' && ($hour >= 8 && $hour < 18)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
    }      
    elseif($day == 'Sun' && ($hour >= 8 && $hour < 18)) { 
     if ($detect->isMobile()) 
     { 
     include 'online_mobile.php'; 
     } else 
     { 
     include 'online_desktop.php'; 
     } 
} else { 
    if ($detect->isMobile()) 
    { 
    include 'closed_mobile.php'; 
    } else 
    { 
    include 'closed_desktop.php'; 
    } 
} 
?> 

Regards R.C.

+0

的可能的複製[簡化PHP代碼](https://stackoverflow.com/questions/6779163/simplifying-php-code) – Jacob

+1

如果這是工作的代碼,我會說這應該在[CodeReview](https://codereview.stackexchange.com/)討論,而不是Stack Overflow。 – agrm

回答

0

嘗試:

<?php 
$include = ''; 

    if(in_array($day, array('Mon', 'Tue', 'Wed', 'Thu', 'Fri')) && ($hour >= 6 && $hour < 22)) { 

     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
    } 

    if($day == 'Sat' && ($hour >= 8 && $hour < 18)) { 
     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
    } 

    if($day == 'Sun' && ($hour >= 8 && $hour < 18)) { 
     $include = $detect->isMobile() ? 'online_mobile' : 'online_desktop'; 
} else { 
    $include = $detect->isMobile() ? 'closed_mobile' : 'closed_desktop'; 
}   

include $include.'php'; 
+0

這真的很棒!我去學習aray的:-)非常感謝!更小,更乾淨。 –

+0

你應該檢查答案,以便其他人知道它 – SuperDJ

+0

我在想:是否可以從文本或CSV文件中讀取日期和時間,並在上面的示例中使用它?文本文件如「Mon」,「7」,「18」 「Tue」,「7」,「18」 「Wed」,「7」,「18」 「Thu」,「7」,「18 「 」星期五「,」7「,」18「 」星期六「,」0「,」0「 」太陽「,」0「,」0「星期六和太陽關閉;-) –