如何在PHP中使用数组名称中的变量?(变量数组/变量变量?)

Ken*_*son 2 php arrays variables

我看过其他问题/答案,但我还没有完全理解它.此外,我还没有找到一个问我的确切问题.

我有7个数组存储业务的开始和结束时间.我的PHP程序检查当天,并将其与当天的开始结束时间进行匹配.所以现在我有7个if类似的声明:

if (date(l) == 'Sunday') {
   $start = $SundayAccountingHours['start'];
   $end = $SundayAccountingHours['end'];
 }
Run Code Online (Sandbox Code Playgroud)

我想要做的是清理代码.所以也许我可以拥有类似的东西

$start = ${$today}.AccountingHours['start'];
$end = ${$today}.AccountingHours['end'];
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?使用上面的例子我得到这个:解析错误:语法错误,在第22行的C:\ xampp\htdocs\Dev.php中出现意外的'[',其中第22行是$ start.我无法取出括号中的内容,因为这是我需要的信息.

如果你不能说,我仍然是PHP的新手所以任何帮助将不胜感激.

谢谢!

mpe*_*pen 5

if (date(l) == 'Sunday') {
   $start = $SundayAccountingHours['start'];
   $end = $SundayAccountingHours['end'];
 }
Run Code Online (Sandbox Code Playgroud)

首先,加上引号'l'.它正在寻找一个常量命名l,并且没有发现它将它视为一个字符串.这是非常糟糕的做法(并应发出警告).

其次,使用多维数组.您不需要尝试使用星期几作为变量名称的一部分.例如,

$start = $AccountingHours[$today]['start'];
Run Code Online (Sandbox Code Playgroud)

您可能会发现变量变量,这些变量允许您执行类似于您尝试的操作,但我强烈建议您避开它们.我不认为它们只有一个实际应用,它们只会造成混乱和错误(咳嗽).