84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我正在嘗試使用動態變數名稱(我不確定它們實際上叫什麼),但很像這樣:
for($i=0; $i<=2; $i ) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);
回傳的是null,這告訴我它不起作用。我不知道我正在尋找的語法或技術是什麼,這使得研究變得困難。 $filelist 是之前定義的。
null
$filelist
在 PHP 中,您只需在變數前面加上額外的$即可使其成為動態變數:
$
$$variableName = $value;
雖然我不建議這樣做,但您甚至可以連結此行為:
$$$$$$$$DoNotTryThisAtHomeKids = $value;
您可以但不強制將$variableName放在{}之間:
$variableName
{}
${$variableName} = $value;
只有當變數名稱本身是多個值的組合時,才強制使用{},如下所示:
${$variableNamePart1 . $variableNamePart2} = $value;
不過,建議永遠使用{},因為它更具可讀性。
總是使用{}的另一個原因是 PHP5 和 PHP7 處理動態變數的方式略有不同,這在某些情況下會導致不同的結果。
在 PHP7 中,動態變數、屬性和方法現在將嚴格按照從左到右的順序進行計算,而不是 PHP5 中混合特殊情況。下面的範例顯示了評估順序是如何變化的。
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
將它們包裹在{}中:
${"file" . $i} = file($filelist[$i]);
使用${}是建立動態變數的方法,簡單的範例:
${}
${'a' . 'b'} = 'hello there'; echo $ab; // hello there
概述
在 PHP 中,您只需在變數前面加上額外的
$
即可使其成為動態變數:雖然我不建議這樣做,但您甚至可以連結此行為:
您可以但不強制將
$variableName
放在{}
之間:只有當變數名稱本身是多個值的組合時,才強制使用
{}
,如下所示:不過,建議永遠使用
{}
,因為它更具可讀性。PHP5 與 PHP7 之間的差異
總是使用
{}
的另一個原因是 PHP5 和 PHP7 處理動態變數的方式略有不同,這在某些情況下會導致不同的結果。在 PHP7 中,動態變數、屬性和方法現在將嚴格按照從左到右的順序進行計算,而不是 PHP5 中混合特殊情況。下面的範例顯示了評估順序是如何變化的。
情況 1:
$$foo['bar']['baz']
${$foo['bar']['baz']}
${$foo}['bar']['baz']
情況 2:
$foo->$bar['baz']
$foo->{$bar['baz']}
$foo->{$bar}['baz']
#情況 3:
$foo->$bar['baz']()
$foo->{$bar['baz']}()
$foo->{$bar}['baz']()
情況 4:
Foo::$bar['baz']()
Foo::{$bar['baz']}()
Foo::{$bar}['baz']()
將它們包裹在
{}
中:工作範例
使用
${}
是建立動態變數的方法,簡單的範例: