天天看點

給變量或數組指派($$a) 但是變量或數組變量名稱本身是動态

有時候可變的變量名會給程式設計帶來很大的友善。也就是說變量名可以被動态的命名和使用。通常變量通過下面這樣的語句來命名 :

$a = 'hello';

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

$$a = 'world'; 

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

echo "$a ${$a}"; 

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

echo "$a $hello"; 

它們都輸出:hello world。

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

例子:數組

//拼裝3級數組名稱
$array3="array3_".$rs[$i]."_".$rs2[$k];// 名稱 3級數組名稱:array2_303_12  array2_304_125
    ${$array3}['人力資源管理'.$rs2[$k]] = $k;
    ${$array3}['工商企業管理'.$rs2[$k]] = 2;      

//拼裝3級數組名稱

$array3="array3_".$rs[$i]."_".$rs2[$k];// 名稱 3級數組名稱:array2_303_12  array2_304_125

$

{$array3}['人力資源管理'.$rs2[$k]] = $k;

${$array3}['工商企業管理'.$rs2[$k]] = 2;

類屬性也可以通過可變屬性名來通路。可變屬性名從産生調用所在的變量的通路範圍内擷取。例如,如果你的表達式是這樣的:$foo->$bar,那麼運 行時将會在本地變量範圍内尋找變量$bar,它的值将會做為$foo對象的一個屬性名。如果$bar是個數組也可以使用。

<?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"; 
?>      

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

I am bar.
I am bar.