我一直在制作一个时钟,根据它的日期显示时间表,所以我创建了7个带有时间表的数组。现在我需要编写一个带有日期的foreach语句:
$day = date("D");
然后在该数组上使用foreach函数,如:
foreach ($day as &$value) {
}
当我这样做虽然它给了我一个错误,因为它要我使用直接数组变量。
警告:第24行/home/johfin16/johnfinberg.com/php/functions-new.php中为foreach()提供的参数无效
以下是我的一个阵列的示例。
$Mon = array("08:10am-08:30am-Morning Meeting",
"08:35am-09:55am-A Block",
"10:05am-11:25am-B Block",
"11:30am-12:05pm-First Lunch",
"12:05pm-12:40pm-Second Lunch",
"12:40pm-02:00pm-C Block",
"02:05pm-03:25pm-D Block");
有没有办法解决这个问题而不创建一堆if语句?
答案 0 :(得分:1)
您似乎正在尝试使用variable variables。所以它应该是:
$day = &${date('D');
foreach ($day as &$value) {
...
}
然而,变量变量通常是糟糕的编程习惯。每当你发现自己需要它们时,它就表明你应该使用关联数组而不是单独的变量。所以你的代码应该是:
$calendar = array(
'Mon' => array("08:10am-08:30am-Morning Meeting","08:35am-09:55am-A Block", "10:05am-11:25am-B Block", "11:30am-12:05pm-First Lunch", "12:05pm-12:40pm-Second Lunch", "12:40pm-02:00pm-C Block", "02:05pm-03:25pm-D Block"),
'Tue' => array(...),
...
);
然后你可以这样做:
$day = &$calendar[date('D')];
foreach ($day as &$value) {
...
}
答案 1 :(得分:0)
switch函数可用于将一个数组设置为$ active,然后该数组可用于foreach函数。例如:
switch ($day) {
case "Mon":
$active = $Mon;
break;
case "Tue":
$active = $Tue;
break;
case "Wed":
$active = $Wed;
break;
default:
$active = $Special;
}
答案 2 :(得分:0)
每天都有多个类需要从数组中提取。
否强>
因为你有:
$day = date("D");
因此,在达到此行之前所包含的$day
,忘记了类,数组,变量等,$day
突然只只变为{{1}的结果}}
您可能希望将date("D")
添加为数组元素(即数组中的众多项之一),因此您可以这样做:
date("D")
这会将$day[] = date("D");
值添加到多个date("D")
的数组中,然后可以使用$days
循环循环。每一天。