數(shù)組與類使用PHP的可變變量名需要的注意的問題
更新時(shí)間:2013年06月20日 09:24:45 作者:
本篇文章是對(duì)數(shù)組與類使用PHP的可變變量名需要的注意的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
有時(shí)候可變的變量名會(huì)給編程帶來很大的方便。也就是說變量名可以被動(dòng)態(tài)的命名和使用。通常變量通過下面這樣的語句來命名 :
$a = 'hello';
可變變量名指的是使用一個(gè)變量的值作為這個(gè)變量的名稱。在上面的例子中,通過使用兩個(gè)$符號(hào),你可以把hello設(shè)置成一個(gè)變量的名稱,就像下面那樣。
$$a = 'world';
通過上面的兩個(gè)語句,有兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是 “world”。 于是,下面的語言:
echo "$a ${$a}";
跟下面的語句的輸出完全一致:
echo "$a $hello";
它們都輸出:hello world。
但是為了使用數(shù)組的可變變量名,你需要解決一個(gè)歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當(dāng)成一個(gè)變量,還是要 把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可以通過可變屬性名來訪問??勺儗傩悦麖漠a(chǎn)生調(diào)用所在的變量的訪問范圍內(nèi)獲取。例如,如果你的表達(dá)式是這樣的:$foo->$bar,那么運(yùn) 行時(shí)將會(huì)在本地變量范圍內(nèi)尋找變量$bar,它的值將會(huì)做為$foo對(duì)象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可以使用。
<?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)取名的特殊變量。
$a = 'hello';
可變變量名指的是使用一個(gè)變量的值作為這個(gè)變量的名稱。在上面的例子中,通過使用兩個(gè)$符號(hào),你可以把hello設(shè)置成一個(gè)變量的名稱,就像下面那樣。
$$a = 'world';
通過上面的兩個(gè)語句,有兩個(gè)變量被定義:變量$a,裝的內(nèi)容是”hello” 以及變量$hello,裝的內(nèi)容是 “world”。 于是,下面的語言:
echo "$a ${$a}";
跟下面的語句的輸出完全一致:
echo "$a $hello";
它們都輸出:hello world。
但是為了使用數(shù)組的可變變量名,你需要解決一個(gè)歧義問題。就是,如果你寫$$a[1],解析器需要明白究竟你的意思是要把$a[1]當(dāng)成一個(gè)變量,還是要 把$$a當(dāng)成變量、[1]指的是這個(gè)變量的索引。解決這個(gè)歧義問題的語法是:第一種情況使用${$a[1]},第二種情況使用${$a}[1]。
類屬性也可以通過可變屬性名來訪問??勺儗傩悦麖漠a(chǎn)生調(diào)用所在的變量的訪問范圍內(nèi)獲取。例如,如果你的表達(dá)式是這樣的:$foo->$bar,那么運(yùn) 行時(shí)將會(huì)在本地變量范圍內(nèi)尋找變量$bar,它的值將會(huì)做為$foo對(duì)象的一個(gè)屬性名。如果$bar是個(gè)數(shù)組也可以使用。
復(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é)果:
復(fù)制代碼 代碼如下:
I am bar.
I am bar.
請(qǐng)注意:可變變量名不能用于PHP函數(shù)和類里的超級(jí)全局?jǐn)?shù)組變量上。變量$this也是一個(gè)不能動(dòng)態(tài)取名的特殊變量。
相關(guān)文章
php中使用exec,system等函數(shù)調(diào)用系統(tǒng)命令的方法(不建議使用,可導(dǎo)致安全問題)
PHP作為一種服務(wù)器端的腳本語言,像編寫簡(jiǎn)單,或者是復(fù)雜的動(dòng)態(tài)網(wǎng)頁這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍2012-09-09
國外PHP程序員的13個(gè)好習(xí)慣小結(jié)
我是一個(gè)PHP新手,只有6個(gè)月的PHP編程經(jīng)歷,并且是在一位經(jīng)過認(rèn)證的zend工程師的指導(dǎo)下完成工作的,每當(dāng)我編寫腳本時(shí),我會(huì)注意一些能讓我做得更好的細(xì)節(jié)2012-02-02
PHP設(shè)計(jì)模式之單例模式原理與實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之單例模式原理與實(shí)現(xiàn)方法,簡(jiǎn)單介紹了單例模式的概念、功能、組成并結(jié)合實(shí)例形式分析了php定義與使用單例模式的相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
php數(shù)組函數(shù)序列 之shuffle()和array_rand() 隨機(jī)函數(shù)使用介紹
shuffle與array_rand定義和用法,需要的朋友可以參考下。2011-10-10
php去除二維數(shù)組的重復(fù)項(xiàng)方法
這篇文章主要介紹了php去除二維數(shù)組的重復(fù)項(xiàng)方法,感興趣的小伙伴們可以參考一下2015-11-11
PHP設(shè)計(jì)模式之結(jié)構(gòu)模式的深入解析
本篇文章是對(duì)PHP設(shè)計(jì)模式中的結(jié)構(gòu)模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

