PHP可變變量


什么是可變變量?

在PHP中有一個其他類型的變量,“可變變量”。可變變量是一種PHP獨特的變量,他允許動態改變一個變量的名稱。

可變變量的工作原理

這個特性的工作原理是用一個變量的值作為另一個變量的名稱。例如,我們可以設置$str的值:
$name = 'str';
於是,我們就可以用

name 取代$str。

name = 5;
這個代碼等價於:
$str= 5;

 

使用方法

使用可變變量就是在變量的前面多加一個美元符號“$”。

 

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

類屬性也可以通過可變屬性名來訪問。可變屬性名從產生調用所在的變量的訪問范圍內獲取。例如,如果你的表達式是這樣的:$foo->$bar,那么運行時將會在本地變量范圍內尋找變量$bar,它的值將會做為$foo對象的一個屬性名。如果$bar是個數組也可以使用。
可變變量名不能用於PHP函數和類里的超級全局數組變量上。變量$this也是一個不能動態取名的特殊變量。

 

實例

下面的實例使用可變變量改變變量的名稱。代碼如下:

1 <?php 2 header("content-type:text/html;charset=utf-8");                //設置編碼
3 $str='trans';                                                  //聲明變量$str
4 $trans='PHP中文網';                                            //聲明變量$trans
5 echo $str;                                                     //輸出變量$str
6 echo "<br/>"; 7 echo $$str;                                                 //通過可變變量輸出$trans的值
8 ?>

實例詳解:

首先定義兩個變量$str和$trans,並且輸出變量$str的值,然后使用可變變量來改變變量$str的名稱,最后輸出改變名稱后的變量值

運行結果如下:

 

PHP中雙引號會解析變量

部分PHP應用在寫配置文件或者使用preg_replace()函數第二個參數賦值變量時,會用到雙引號(")來代表string類型給變量賦值

注意:

在PHP語言中單引號和雙引號是有區別的,單引號代表純字符串,雙引號則會解析中間變量,所以在使用雙引號時,會存在命令執行漏洞,我們來看一個測試

代碼如下:

1 <?php 2 $a="$(@phpinfo())"; 3 ?>

當運行這段代碼時,phpinfo()函數會成功執行,輸出內容如圖

 

這里有個地方需要注意,代碼${@phpinfo()}中的'@'符號是必須存在的,不然就會無法執行,但是除了“@”符號還有其他的寫法也可以,只要不影響PHP規范均可執行,舉例如下:

(1)第一個字符為空格

(2)第一個字符為Tab

(3)第一個字符為注釋符/**/

(4)第一個字符為加號(+)

(5)第一個字符為減號(-)

除了這些還有如~,\,!等等

 

參考:https://www.php.cn/php-weizijiaocheng-361041.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM