根据星期几显示PHP对象

时间:2011-06-23 07:11:01

标签: php html css wordpress

因此,我在一周中的每一天都在7个不同的对象中设置了营业时间。我希望能够在标题中显示当前这一天的业务时间。像这样设置,但它不会吐出任何东西

<?php
    $d=date("D");
    if ($d=="Mon")
    echo <?php echo of_get_option('monday', 'no entry'); ?>;
    elseif ($d=="Tue")
    echo <?php echo of_get_option('tuesday', 'no entry'); ?>;
    elseif ($d=="Wed")
    echo <?php echo of_get_option('wednesday', 'no entry'); ?>;
    elseif ($d=="Thu")
    echo <?php echo of_get_option('thursday', 'no entry'); ?>;
    elseif ($d=="Fri")
    echo <?php echo of_get_option('friday', 'no entry'); ?>;
    elseif ($d=="Sat")
    echo <?php echo of_get_option('saturday', 'no entry'); ?>;
    elseif ($d=="Sun")
    echo <?php echo of_get_option('sunday', 'no entry'); ?>;
    else
    echo "Have a nice day!";
?>

5 个答案:

答案 0 :(得分:6)

if/else中,根本不需要else。看看manual for datedate将返回false的唯一方法是为第二个参数传入非数字时间戳。你没有这样做,所以date将会返回其中一天。

但是,不要使用if/elseswitch/case(这将是相同的),为什么不使用

echo of_get_option(strtolower(date('l')), 'no entry');

使用date致电l将为您提供当天的名称。 strtolower将全部小写。你在那里做的映射是多余的。上面的单行相当于您在问题中显示的整个代码段。

在旁注中,of_get_option是什么类型的函数名称?什么是of?它代表办公室吗?如果确实如此,为什么这是一个函数而不是Office对象上的方法?毕竟,你说你正在使用物体。当它应该显示办公时间时,为什么会说get_option?名称不应该是getOfficeHoursOnDay($day),甚至更好,displayOfficeHoursOnDay($listRenderer, $day)。尝试使您的代码更具表现力和可读性,并尝试将责任转移到他们所属的位置。

答案 1 :(得分:2)

如果已经打开了其他PHP标记,您当然不需要打开它。


找到解决方案很好,但是让我发布一个更具可读性的版本,没有不必要的重复。它使用数组进行映射。

<?php
    $d=date("D");
    $mapping=array(
        "Mon" => "monday",
        "Tue" => "tuesday",
        "Wed" => "wednesday",
        ...
    );

    if (array_key_exists($d, $mapping)) {
        echo of_get_option($mapping[$d], 'no entry');
    }
    else {
        echo "Have a nice day!";
    }
?>

答案 2 :(得分:1)

尝试使用开关并从代码中删除额外的标签,例如

$d=date("D");
switch ($d) {
case "Mon":
echo of_get_option('monday', 'no entry');
break;
case "Tue":
echo of_get_option('tuesday', 'no entry');
break;
default:
echo "Have a nice day!";
}

答案 3 :(得分:1)

我建议远离使用字符串。 Date返回根据区域设置设置的本地化字符串。所以你结束了一个不那么神奇的魔术弦。

相反,请使用星期几的数字:

 of_get_option(date('w'));

您当然需要更改功能以接受它。但它更容易理解,更便携,恕我直言...... ...

答案 4 :(得分:-1)

我假设你没有嵌套php标签的问题,太明显了。

由于条件正确,您应该检查函数of_get_option()。它是如何工作的,是否会返回任何东西?检查var_dump()。

此外,使用

会更清晰
date("N")

所以你可以在工作日获得1到7的数字。

编辑:好的,在回复你的评论时,我认为你从某个地方复制了这些php-tag-parts。所以请尝试:

<?php
    $d=date("D");
    if ($d=="Mon")
      echo of_get_option('monday', 'no entry');
    elseif ($d=="Tue")
      echo of_get_option('tuesday', 'no entry');
    elseif ($d=="Wed")
      echo of_get_option('wednesday', 'no entry');
    elseif ($d=="Thu")
      echo of_get_option('thursday', 'no entry');
    elseif ($d=="Fri")
      echo of_get_option('friday', 'no entry');
    elseif ($d=="Sat")
      echo of_get_option('saturday', 'no entry');
    elseif ($d=="Sun")
      echo of_get_option('sunday', 'no entry');
    else
      echo "Have a nice day!";
?>