php動態拼接變量名,可變變量,動態變量,使用花括號,使用兩個$符
方式一:使用花括號,前綴部分不需要用單引號
$nums10 = 100;
$xxx*${bcount.$nums10}['m54']/$nums10
方式二:使用兩個$符,先給key賦值最終的變量名稱,后面才當成真正的變量使用。
$nkey = 'bcount'.$nums10;
$xxx*$$nkey['m54']/$nums10
=================
PHP可以動態地創建一個變量名。如:使用與數據庫查詢得到的字段名稱一致的變量名。
使用PHP中“可變變量”的語法:在一個其值為你想作為變量名稱的變量前面加一個$:
$animal = 'turtles';
$turtles = 103;
print $$animal;
在PHP中如果在一個變量名稱前面放兩個美元($)符號,PHP就會廢棄右面的變量,而取其值,然后,將該值作為“真正”的變量名稱。例如:
$animal = 'turtles';
$turtles = 1024;
print $$animal;
這段代碼會輸出1024。因為$animal = ’turtles',$$animal 就是$turtles,而$turtles等於1024。
如果使用大括號,還能夠構造出用於表示變量名的更復雜的表達式:
$stooges = array('Moe','Larry','Curly');
$stooge_moe = 'Moses Horwitz';
$stooge_larry = 'Louis Feinberg';
$stooge_curly = 'Jerome Horwitz';
foreach ($stooges as $s) {
print "$s's real name was ${'stooge_'.strtolower($s)}.\n";
}
Moe's real name was Moses Horwitz.
Larry's real name was Louis Feinberg.
Curly's real name was Jerome Horwitz.
PHP會求得位於大括號之間的表達式的值,並將這個值作為一個變量名。大括號中的表達式甚至還可以調用函數,比如上面代碼中的strtolower()。
在迭代類似的變量名稱時,可變變量也很有用。假如你想要查詢一個數據庫表,其字段名分別是title_1, title_2等。如果你想要檢查一個標題($title)是否與其中一個字段的值匹配,那么最簡單的方式就是像下面這樣進行循環遍歷:
for ($i = 1; $i <= $n; $i++) {
$t = "title_$i";
if ($title == $$t) { /* match */ }
}
當然,如果把這些值保存到一個數組中可能會更直觀,不過,要是你在維護一段使用了這種技術的老代碼(即不能修改),可變變量就很有用了。
大括號語法在理清有關數組元素的歧義時是必要的。可變變量$$donkeys[12]可能有兩種含義。第一種含義是“拿$donkeys數組中第12元素的值作為一個變量名”,要想明確表示這種含義,應該寫成:${$donkeys[12]}。第二種含義是“用標量$donkeys的值作為一個數組名稱,並找到該數組中的第12元素”,若想明確表示這種含義,應該寫成:${$donkeys}[12]。
HP中動態創建變量名語法並不局限於兩個美元符號,可以使用三個甚至更多個。然而,在實踐中很少出現有必要使用超過兩個間隔層次的情況。