我看过其他的问题/答案,但我没有完全理解。此外,我还没有发现一个人在问我的问题。
我有7个数组存储业务的开始和结束时间。我的PHP程序检查当前的一天,并将其与当天的开始结束时间相匹配。所以现在我有7条if
语句,类似于这样:
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
我要做的是清理代码。所以也许我可以
$start = ${$today}.AccountingHours['start'];
$end = ${$today}.AccountingHours['end'];
我怎么才能把这事做好?使用上面的示例,我得到了以下内容:Parse :语法错误,在第22行的C:\xampp\htdocs\Dev.php中意外的'[‘,其中定义了第22行为$start。我不能把括号里的东西拿出来,因为这是我真正需要得到的信息。
如果你不知道,我在PHP还是新手,所以任何帮助都会很感激。
谢谢!
发布于 2013-05-21 18:40:44
if (date(l) == 'Sunday') {
$start = $SundayAccountingHours['start'];
$end = $SundayAccountingHours['end'];
}
首先,在'l'
周围加上引号。它正在寻找一个名为l
的常量,却没有发现它被当作字符串对待。这是非常糟糕的做法(应该发出警告)。
其次,使用多维数组.您不需要尝试使用一周一天作为变量名的一部分。例如,
$start = $AccountingHours[$today]['start'];
你可能会在路上发现变量,这些变量允许你做一些类似你正在尝试的事情,但我强烈建议你避开它们。我不认为它们有一个实用的应用程序,它们只会造成混乱和错误(https://stackoverflow.com/a/16682648/65387)。
发布于 2013-05-21 18:42:30
如果您必须使用变量名(您确实应该使用多维数组),请尝试如下所示。
$start = ${$today.'AccountingHours'}['start'];
发布于 2013-05-21 18:42:06
数组元素可以由如下所示的变量引用:
$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'];
https://stackoverflow.com/questions/16682600
复制