2012-11-05 36 views
1

動態,我有以下3個變量:推項目數組變量名稱爲在PHP

 private $a_total; 
     private $b_total; 
     private $c_total; 

現在當字段是用一些數據彙總填寫,這些字段的名稱是「一」, 「b」和「c」。我要動態地保存它的變量上面是這樣的:

 $type = $_POST['totaltype']; //either a, b or c 
     $to_save = "{$type}_total"; 
     $this->$to_save['total'] = some number; 

,如果我嘗試

print_r($this->$to_save); 

它給空數組。如果我嘗試:

print_r($this->$to_save['total']); 

它給出正確的數字。

任何人都可以幫忙嗎?

注:我要動態地使用,因爲這些數據將是一個大循環中,所以我不想重用$a_total$b_total$c_total因爲我將有超過abc變量。

+1

res可能更好構建你訪問這個的方式。你有沒有考慮過'$ this-> totals [$ type]'。沒有理由爲這種情況動態地創建一個變量。 – freshnode

+0

我需要將它作爲單獨的序列化數組存儲在數據庫中。這件事會起作用嗎? – Giorgi

+1

是的,如果你serialize($ this-> totals)'你會得到一個具有關聯結構的數組。如果你正在使用下面的答案之一,那就去吧 - 只是沒有立即明白爲什麼你需要承擔動態創建這些變量的開銷。 – freshnode

回答

1

您可以在大括號中輸入變數名稱的類內的字符串中的變量,例如您的$to_save,並以相同的方式訪問它:

$to_string = $type . '_total'; 
$this->{$to_string}['total'] = 5; 
print_r($this->{$to_string}); 
+0

這是我正在尋找,花括號做的伎倆謝謝你 – Giorgi

0

變化$a_total$total['a']$b_total$total['b'],並$c_total$total['c']

然後你就可以動態地訪問這些值。

$this->{$type . "_total"}['total'] = 5; 

您還可以保存全名:像數組訪問時

$this->{$type . "_total"} = 5; 

同樣的工作: