2014-01-06 28 views
1

下面是代碼示例:PHP使用鍵獲得使用變量作爲數組名稱的數組的元素

$test = array(
    1 => 'one', 
    2 => 'two', 
    3 => 'three' 
); 

$arrayName = 'test'; 

error_log(print_r($$arrayName, 1)); 
error_log($$arrayName[1]); 

輸出:

Array 
(
    [1] => one 
    [2] => two 
    [3] => three 
) 
PHP Notice: Undefined variable: e in /Applications/MAMP/htdocs/_base/test.php on line 12 

我希望的是,第二線將輸出'一',顯然它沒有工作。看起來括號具有更高的解析優先級,所以$ arrayName在這裏被當作數組。

我嘗試使用大括號首先包裝$$ arrayName,它不知何故導致PHP解析錯誤。由於最終我需要使用unset刪除選定的元素,因此使用臨時變量來存儲數組並不理想。想知道是否有任何方法可以在一條線內完成。任何見解都被讚賞!

+0

爲什麼使用變量變量而不是關聯數組? – Barmar

+1

$ {$ arrayName} [1]; – DavidLin

回答

2

用途:

error_log(${$arrayName}[1]); 

Variable Variables PHP文檔。它解釋說,你必須使用大括號來解決歧義。它需要知道您是要使用$$arrayName作爲變量還是使用$arrayName[1]作爲變量。

+0

+1說明 – kapa

+0

謝謝,應該仔細閱讀說明書 – aarryy

相關問題