我看过其他问题/答案,但我并没有完全理解它。此外,我还没有找到一个问我的确切问题。
我有7个数组存储业务的开始和结束时间。我的PHP程序检查当天,并将其与当天的开始结束时间进行匹配。所以现在我有7个if
语句与此类似:
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
我想要做的是清理代码。所以也许我可能有像
这样的东西$start = ${$today}.AccountingHours['start'];
$end = ${$today}.AccountingHours['end'];
我该如何使这项工作?使用上面的例子,我得到了这个:解析错误:语法错误,第22行的C:\ xampp \ htdocs \ Dev.php中的意外'[',其中第22行是$ start。我无法取出括号中的内容,因为这是我需要的信息。
如果你不能说,我仍然是PHP的新手,所以任何帮助将不胜感激。
谢谢!
答案 0 :(得分:5)
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
首先,在'l'
周围加上引号。它正在寻找一个名为l
的常量,并且没有发现它将它视为一个字符串。这是非常糟糕的做法(并应发出警告)。
其次,使用多维数组。您不需要尝试使用星期几作为变量名称的一部分。如,
$start = $AccountingHours[$today]['start'];
你可能会发现变量变量,这可以让你做一些像你正在尝试的事情,但我强烈建议你避开它们。我不认为它们只有一个实际的应用程序,它们只会引起混淆和错误(cough)。
答案 1 :(得分:1)
如果你必须使用变量变量名称(你应该真的去寻找多维数组),试试这样的事情。
$start = ${$today.'AccountingHours'}['start'];
答案 2 :(得分:0)
数组元素可以通过如下变量引用:
$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'];