PHP的可變變數名介紹

來源:互聯網
上載者:User

有時候可變的變數名會給編程帶來很大的方便。也就是說變數名可以被動態命名和使用。通常變數通過下面這樣的語句來命名 :

<?php $a = "hello"; ?> 

可變變數名指的是使用一個變數的值作為這個變數的名稱。在上面的例子中,通過使用兩個$符號,你可以把hello設定成一個變數的名稱,就像下面那樣。

<?php $$a = "world"; ?> 

通過上面的兩個語句,有兩個變數被定義:變數$a,裝的內容是”hello” 以及變數$hello,裝的內容是 “world”。 於是,下面的語言:

<?php echo "$a ${$a}"; ?> 

跟下面的語句的輸出完全一致:

<?php echo "$a $hello"; ?> 

它們都輸出:hello world。

為了使用數組的可變變數名,你需要解決一個歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當成一個變數,還是 要把$$a當成變數、[1]指的是這個變數的索引。解決這個歧義問題的文法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。

類屬性也可以通過可變屬性名稱來訪問。可變屬性名稱從產生調用所在的變數的存取範圍內擷取。例如,如果你的運算式是這樣 的:$foo->$bar,那麼運行時將會在本地變數範圍內尋找變數$bar,它的值將會做為$foo對象的一個屬性名稱。如果$bar是個數組也可 以使用。

例1 可變變數名

<?php 
  class foo { 
    var $bar = "I am bar."; 
  } 
  $foo = new foo(); 
  $bar = "bar";  
  $baz = array("foo", "bar", "baz", "quux");  
  echo $foo->$bar . " 
";  
  echo $foo->$baz[1] . " 
";  
?> 

上面的例子將會輸出下面的結果:

I am bar.

I am bar.

警告

請注意,可變變數名不能用於PHP函數和類裡的超級全域陣列變數上。變數$this也是一個不能動態取名的特殊變數。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.