显示除星期三特定时间之外的所有日子的内容



除了星期三下午3点CST&午夜或同一个星期三晚上11:59。以下是到目前为止我没有工作的代码?这是我第一次使用if日期功能,所以这对我来说是全新的

<?php 
if (date('w') == '1' | == '2' | == '4' | == '5' | == '6' | == '0') {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
  }
else if (date('w') == 3){
 if (date('H') >= 15 && date('H') < 0) {
    //Content to show on Wednesday from 3pm to midnight 
 }
}
?>

|是按位运算符。||是逻辑OR运算符。

PHP运算符。

此外,这里还有一个更高效的版本:

if (date('w') == 3) {
    if (date('H') >= 15) {
        //Content to show on Wednesday from 3pm to midnight 
    }
} else {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
}

如果比较在每种情况下都需要日期变量,最好使用临时数组进行检查:

if(in_array(date('w'), array(0, 1, 2, 4, 5, 6))) {
    // info to show except Wed
} else {
    // w is 3
    if(date('H') >= 15) {
        // Content to show on Wed from 3pm to midnight
    }
}

注意:

  • else是隐含的,因为您已经在第一个子句中指定了所有其他可能性,所以天数将为3
  • 小时永远不会小于零,但如果是在下午3点到午夜之间,它总是会大于15,所以删除了第二部分

与不同值进行比较的语法都是错误的。您必须重复比较,并将它们与布尔or运算符|| 组合

$w = date('w');
if ($w == 1 || $w == 2 || $w == 4 || $w == 5 || $w == 6 || $w == 0) {
    //info to show Mon, Tue, Thur, Fri, Sat, Sun all day. 
} else if ($w == 3 && date('H') >= 15) {
    //Content to show on Wednesday from 3pm to midnight
}

当然,您也可以将第一个条件简化为if ($w != 3)

你的测试date('H') < 0永远不可能是真的——时钟上没有负小时。我猜你的意思是< 24,但那是没有必要的,因为所有的时间都不到24小时。

我可以看到三件不正确的事情:

  1. | ==应该是|| ==,但我已经简化为一个if语句,因为你似乎只想知道它是否在周三下午3点之后
  2. 从逻辑上讲,你不可能是>= 15 && <0——所以这永远不会是真的
  3. date()函数返回一个字符串,您正在与整数== 3进行比较(PHP可能会很好地处理类型,但我已经为皮带和大括号方法引入了intval())

试试这个:

<?php 
    if (intval(date('w')) == 3 && intval(date('H')) >= 15) {
        // it's after 3pm on a Wed...
    }
?>

最新更新