2017-10-21 74 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“星期六和太阳关闭;-) –