因此,我在一周中的每一天都在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!";
?>
答案 0 :(得分:6)
在if/else
中,根本不需要else
。看看manual for date
。 date
将返回false
的唯一方法是为第二个参数传入非数字时间戳。你没有这样做,所以date
将会返回其中一天。
但是,不要使用if/else
或switch/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!";
?>