首頁  >  問答  >  主體

在 PHP 中使用帶有動態變數名稱的大括號

<p>我正在嘗試使用動態變數名稱(我不確定它們實際上叫什麼),但很像這樣:</p> <pre class="brush:php;toolbar:false;">for($i=0; $i<=2; $i ) { $("file" . $i) = file($filelist[$i]); } var_dump($file0);</pre> <p>回傳的是<code>null</code>,這告訴我它不起作用。我不知道我正在尋找的語法或技術是什麼,這使得研究變得困難。 <code>$filelist</code> 是之前定義的。 </p>
P粉717595985P粉717595985389 天前430

全部回覆(2)我來回復

  • P粉588660399

    P粉5886603992023-08-30 10:02:10

    概述

    在 PHP 中,您只需在變數前面加上額外的 $ 即可使其成為動態變數:

    $$variableName = $value;

    雖然我不建議這樣做,但您甚至可以連結此行為:

    $$$$$$$$DoNotTryThisAtHomeKids = $value;

    您可以但不強制將 $variableName 放在 {} 之間:

    ${$variableName} = $value;

    只有當變數名稱本身是多個值的組合時,才強制使用 {},如下所示:

    ${$variableNamePart1 . $variableNamePart2} = $value;

    不過,建議永遠使用 {},因為它更具可讀性。

    PHP5 與 PHP7 之間的差異

    總是使用 {} 的另一個原因是 PHP5 和 PHP7 處理動態變數的方式略有不同,這在某些情況下會導致不同的結果。

    在 PHP7 中,動態變數、屬性和方法現在將嚴格按照從左到右的順序進行計算,而不是 PHP5 中混合特殊情況。下面的範例顯示了評估順序是如何變化的。

    情況 1:$$foo['bar']['baz']

    • #PHP5 解釋:${$foo['bar']['baz']}
    • PHP7 解釋:${$foo}['bar']['baz']

    情況 2:$foo->$bar['baz']

    • PHP5 解釋:$foo->{$bar['baz']}
    • #PHP7 解釋:$foo->{$bar}['baz']

    #情況 3:$foo->$bar['baz']()

    • #PHP5 解釋:$foo->{$bar['baz']}()
    • PHP7 解釋:$foo->{$bar}['baz']()

    情況 4:Foo::$bar['baz']()

    • PHP5 解釋:Foo::{$bar['baz']}()
    • #PHP7 解釋:Foo::{$bar}['baz']()
    #

    回覆
    0
  • P粉043295337

    P粉0432953372023-08-30 09:41:31

    將它們包裹在 {} 中:

    ${"file" . $i} = file($filelist[$i]);

    工作範例


    使用${}是建立動態變​​數的方法,簡單的範例:

    ${'a' . 'b'} = 'hello there';
    echo $ab; // hello there

    回覆
    0
  • 取消回覆