//過程:
var i = "0";
this['str'+i] = 100;
//結果:
console.log(str0); //會回傳100
//function內也是一樣
function func(){
var a = '123';
for(i=0;i<=5;i++){
this['a'+i] = i;
console.log(this['a'+i]);
}
}
func();
//會印出6次結果,分別是0~5
PHP變數和函數的特異功能
- for-loop 中最常使用到動態變數
<?php
// price name list
$priceNameList = array('Original', 'VIP', 'Employee');
// price list
$priceList = array(300, 200, 100);
$total = count($priceList);
// dump priceList to meaningful variable name;
for ($i=0; $i < $total; $i++) {
${'price'.$priceNameList[$i]} = $priceList[$i];
}
echo 'oringial price: ' . $priceOriginal . "\n";
這樣就可以將變數的名稱做有意義的命名,當然也可以透過 array key value的方式做到。
$priceDictionary = array("Original" => 300,
"VIP" => 200,
"Employee" => 100);
foreach ($priceDictionary as $key => $value) {
${'price'.$key} = $value;
}
echo 'demo 2: oringial price: ' . $priceOriginal . "\n";
更進階的方法,PHP中提供了一個很特別的函式
extract()
,只要一行就可以做到我們的需求:extract($priceDictionary, EXTR_PREFIX_ALL, "price");
echo 'demo 3: oringial price: ' . $price_Original . "\n";
這裡需要特別注意的地方是,
extract()
參數,預設值是 EXTR_OVERWRITE
,會把既有變數的值覆蓋。另外 EXTR_PREFIX_ALL
變數會有 _
i.e $price_Original
而不是 $priceOriginal
。
有關extract()參數請參考 extract manual