我看过其他问题/答案,但我不完全理解它。而且,我还没有找到一个人问我确切的问题。
我有7个数组存储业务的开始和结束时间。我的PHP程序检查当前日期,并将其与当天的开始结束时间进行匹配。现在我有7个类似的if
语句:
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
我想做的是清理代码。所以我可以输入
$start = ${$today}.AccountingHours['start'];
$end = ${$today}.AccountingHours['end'];
我怎样才能使它工作?使用上面的例子,我得到这个:解析错误:语法错误,意外的'['在C:'xampp'htdocs'Dev.php第22行,其中第22行是$start被定义。我不能去掉括号里的东西因为那是我真正需要的信息。
如果你不能告诉,我仍然是PHP新手,所以任何帮助将是感激的。
谢谢!
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
首先,在'l'
周围加上引号。它正在寻找一个名为l
的常量,并没有发现它将其视为字符串。这是非常糟糕的做法(应该发出警告)。
其次,使用多维数组。您不需要尝试使用星期几作为变量名的一部分。例如,
$start = $AccountingHours[$today]['start'];
你可能会发现变量变量可以让你做你想做的事情,但我强烈建议你避开它们。我不认为它们有一个单一的实际应用,它们只会引起混乱和错误(咳嗽)。
如果你必须使用变量名(你真的应该使用多维数组),试着这样做:
$start = ${$today.'AccountingHours'}['start'];
数组元素可以被变量引用,如下所示:
$myArray[$myVar]
数组也可以包含其他数组,如:
$myArray = array();
$myArray['a'] = array();
$myArray['a']['b'] = 'foo';
print $myArray['a']['b']; // prints 'foo'
所以结合这两个概念,你可以创建一个多维数组由变量引用:
$accountingHours = array();
$accountingHours['Sunday'] = array('start' => ..., 'end' => ...);
// ...
$start = $accountingHours[$today]['start'];