PHP的可變變量名的使用方法分享
更新時(shí)間:2012年02月05日 21:40:48 作者:
有時(shí)候可變的變量名會(huì)給編程帶來很大的方便。也就是說變量名可以被動(dòng)態(tài)的命名和使用
通常變量通過下面這樣的語句來命名 :
<?php
$a = 'hello';
?>
可變變量名指的是使用一個(gè)變量的值作為這個(gè)變量的名稱。在上面的例子中,通過使用兩個(gè)$符號(hào),你可以把hello設(shè)置成一個(gè)變量的名稱,就像下面那樣。
<?php
$$a = 'world';
?>
通過上面的兩個(gè)語句,有兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是 “world”。 于是,下面的語言:
<?php
echo "$a ${$a}";
?>
跟下面的語句的輸出完全一致:
<?php
echo "$a $hello";
?>
它們都輸出:hello world。
為了使用數(shù)組的可變變量名,你需要解決一個(gè)歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當(dāng)成一個(gè)變量,還是要把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可以通過可變屬性名來訪問。可變屬性名從產(chǎn)生調(diào)用所在的變量的訪問范圍內(nèi)獲取。例如,如果你的表達(dá)式是這樣的:$foo->$bar,那么運(yùn)行時(shí)將會(huì)在本地變量范圍內(nèi)尋找變量$bar,它的值將會(huì)做為$foo對(duì)象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可以使用。
例1 可變變量名
<?php
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "n";
echo $foo->$baz[1] . "n";
?>
上面的例子將會(huì)輸出下面的結(jié)果:
I am bar.
I am bar.
警告
請(qǐng)注意,可變變量名不能用于PHP函數(shù)和類里的超級(jí)全局?jǐn)?shù)組變量上。變量$this也是一個(gè)不能動(dòng)態(tài)取名的特殊變量。
復(fù)制代碼 代碼如下:
<?php
$a = 'hello';
?>
可變變量名指的是使用一個(gè)變量的值作為這個(gè)變量的名稱。在上面的例子中,通過使用兩個(gè)$符號(hào),你可以把hello設(shè)置成一個(gè)變量的名稱,就像下面那樣。
復(fù)制代碼 代碼如下:
<?php
$$a = 'world';
?>
通過上面的兩個(gè)語句,有兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是 “world”。 于是,下面的語言:
復(fù)制代碼 代碼如下:
<?php
echo "$a ${$a}";
?>
跟下面的語句的輸出完全一致:
復(fù)制代碼 代碼如下:
<?php
echo "$a $hello";
?>
它們都輸出:hello world。
為了使用數(shù)組的可變變量名,你需要解決一個(gè)歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當(dāng)成一個(gè)變量,還是要把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可以通過可變屬性名來訪問。可變屬性名從產(chǎn)生調(diào)用所在的變量的訪問范圍內(nèi)獲取。例如,如果你的表達(dá)式是這樣的:$foo->$bar,那么運(yùn)行時(shí)將會(huì)在本地變量范圍內(nèi)尋找變量$bar,它的值將會(huì)做為$foo對(duì)象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可以使用。
例1 可變變量名
復(fù)制代碼 代碼如下:
<?php
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo $foo->$bar . "n";
echo $foo->$baz[1] . "n";
?>
上面的例子將會(huì)輸出下面的結(jié)果:
I am bar.
I am bar.
警告
請(qǐng)注意,可變變量名不能用于PHP函數(shù)和類里的超級(jí)全局?jǐn)?shù)組變量上。變量$this也是一個(gè)不能動(dòng)態(tài)取名的特殊變量。
相關(guān)文章
利用PHP函數(shù)計(jì)算中英文字符串長(zhǎng)度的方法
這篇文章主要介紹了利用PHP函數(shù)計(jì)算中英文字符串長(zhǎng)度的方法,實(shí)例對(duì)比了PHP函數(shù)實(shí)現(xiàn)方法與正則表達(dá)式的實(shí)現(xiàn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-11-11PHP類的靜態(tài)(static)方法和靜態(tài)(static)變量使用介紹
PHP類的靜態(tài)(static)方法和靜態(tài)(static)變量使用介紹,學(xué)習(xí)php的朋友可以看下2012-02-02基于PHP實(shí)現(xiàn)微博熱搜實(shí)時(shí)監(jiān)控平臺(tái)
在學(xué)習(xí)、“脫發(fā)”之余,便是去微博看看有沒有發(fā)生什么有趣的事情,或是了解一下正在發(fā)生著哪些“大事”,亦或是某些讓我久久不能平復(fù)的事…本文將用PHP實(shí)現(xiàn)微博熱搜實(shí)時(shí)監(jiān)控平臺(tái),需要的可以參考一下2022-06-06phpstorm最新激活碼分享親測(cè)phpstorm2021.3版可用
這篇文章主要分享了phpstorm最新激活碼親測(cè)phpstorm2021.3.1版可用,如果你的提示過期可以使用phpstorm永久激活補(bǔ)丁+激活碼需要的朋友可以參考下2020-11-11PHP連接sql server 2005環(huán)境配置及問題解決
這篇文章主要介紹了PHP連接sql server 2005環(huán)境配置及問題解決,需要的朋友可以參考下2014-08-08php 數(shù)據(jù)庫字段復(fù)用的基本原理與示例
php 數(shù)據(jù)庫字段復(fù)用的基本原理與示例,需要的朋友可以參考下。2011-07-07PHP-FPM運(yùn)行狀態(tài)的實(shí)時(shí)查看及監(jiān)控詳解
php-fpm和nginx一樣內(nèi)建了一個(gè)狀態(tài)頁,對(duì)于想了解php-fpm的狀態(tài)以及監(jiān)控php-fpm非常有幫助。這篇文章就給大家詳細(xì)介紹了PHP-FPM運(yùn)行狀態(tài)的實(shí)時(shí)查看及監(jiān)控,有需要的朋友們可以參考學(xué)習(xí),感興趣的朋友們下面來一起看看吧。2016-11-11