簡體   English   中英

PHP:使用變量名,對數組不起作用?

[英]PHP: Using a variable name, doesn't work on arrays?

我試圖弄清楚為什么它起作用:

$joe = "hey joe";
$something = "joe";
print_r(${$something});

但這不是:

$joe["where_you_going"] = "hey joe";
$something = "joe[where_you_going]";
print_r(${$something});

為什么是這樣? 有沒有辦法做我在第二個示例中嘗試過的事情?

變量變量是PHP的一項特殊功能,它允許您使用第一個示例: http : //php.net/manual/en/language.variables.variable.php 這不是評估,因此在第二個示例中它不起作用。

在第二個示例joe [where_you_going]中,有一個數組的名稱,方括號運算符和索引的名稱。 您不能僅將所有三個結合在一起,因為它們需要運算(索引到數組中),而不僅僅是命名。 您可以這樣做:

$joe["where_you_going"] = "hey joe";
$something = "joe";
$something_else = "where_you_going";
print_r(${$something}[$something_else]);

不,你不能那樣做。

PHP的“變量變量”概念通常最好還是以數組形式完成。

可變變量語法不允許這樣做。
在您的情況下,改為執行以下其中一項操作是否有意義?

使用變量作為數組索引:

$joe["where_you_going"] = "hey joe";
$something = "where_you_going";
print_r($joe[$something]);


使用變量作為數組的名稱,並使用另一個變量作為索引:

$joe["where_you_going"] = "hey joe";
$something1 = "joe";
$something2 = "where_you_going";
print_r(${$something1}[$something2]);


使用eval評估整個表達式:

$joe["where_you_going"] = "hey joe";
$something = '$joe["where_you_going"]';
print_r(eval("return {$something};"));

暫無
暫無

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

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