在PHP中针对数组测试变量

时间:2015-06-09 23:52:46

标签: php arrays date

我想我应该使用in_array()但是由于某种原因它给了我不准确的信息。我浏览了array_search()array_key_exists(),但看起来这只有在我的数组中有一个键和值时才有用。简而言之,我运行一个条件来获取当前的EST时间和日期,并确定它是“在几小时内”还是“在下班后”。

所以现在是星期二的19:00,这应该说是“非工作时间”,但它回应“在工作时间”,我错过了什么?

示例代码:

<?php

date_default_timezone_set('US/Eastern');
$current_time = date('A'); //AM or PM
$current_day = date('l'); // Sunday - Saturday
$current_hour = date('H'); // 08 / 24hr Time Format

$closed_days = array('Saturday','Sunday');

$closed_hours = array('17','18','19','20','21','22','23','00','01','02','03','04','05','06','07','08');
?>
<?php
echo $current_time . '<br />';
echo $current_day . '<br />';
echo $current_hour . '<br />';
//Operating Hours
if(!in_array($current_day, $closed_days) || !in_array($current_hour, $closed_hours)) {
    echo 'During Hours';
} else { 
    echo 'After Hours';
} ?>

回归:

PM
Tuesday
19
During Hours

3 个答案:

答案 0 :(得分:6)

变化:

if(!in_array($current_day, $closed_days) || !in_array($current_hour, $closed_hours)) {

if(!in_array($current_day, $closed_days) && !in_array($current_hour, $closed_hours)) {

||相当于“或”因此条件恢复正常说是休息日但是在正常时间

使用&amp;&amp;等于“和”,它要求两个条件语句都为真,以执行代码块

答案 1 :(得分:1)

我很确定它就像改变你的if语句一样简单:

!in_array($current_day, $closed_days) || !in_array($current_hour, $closed_hours)

要:

!in_array($current_day, $closed_days) && !in_array($current_hour, $closed_hours)

通过使用OR,你只说一个条件必须是真的

答案 2 :(得分:-1)

更改

if(!in_array($current_day, $closed_days) || !in_array($current_hour, $closed_hours)) {
  echo 'During Hours';
} else { 
     echo 'After Hours';
} 

if(in_array($current_day, $closed_days) || in_array($current_hour, $closed_hours)){
  echo 'After Hours';
}
else{
   echo 'During Hours';
}