簡體   English   中英

如何在PHP的數組名稱中使用變量? (變量數組/變量變量?)

[英]How do I use a variable in an array name in PHP? (variable arrays/variable variable?)

我看過其他問題/答案,但我不太了解。 此外,我還沒有人問我確切的問題。

我有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的新手,因此將不勝感激。

謝謝!

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'];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM