2016-03-10 60 views
2

我使用以下代碼動態地聲明變量:PHP動力學變量聲明

$fields = array('name1', 'name2'); 

foreach($fields as $field) { 
    $$field = false; 
} 

的問題是有重疊,因爲我使用多於一個陣列的變量名。

現在的問題是:如何使用前面的方法向變量名追加一個字母?

例如,如果我們要追加信˚F前面的例子,那麼我們會得到$ Fname1,$ Fname2

我試圖做$ F $場但doen't的工作,我也試着設置環路內$域=「F」 + $場,但也不能工作。

+5

如果你運行ino問題有了這個ms,那麼也許PHP告訴你,這不是你想要做的任何事情的最佳方式......也許你可以解釋你試圖達到的目標,並且我們可能會告訴你一個更好的替代方法....也許甚至像'$ fieldSet = array_fill_keys($ fields,false);'...一樣簡單 - 但是如果你有重複的變量名,那麼你肯定會接近這個錯誤的方式 –

+1

我同意馬克 - 海事組織在很多情況下你需要使用變量變量。通常只使用關聯數組就可以實現這個功能,但是可以避免類似這樣的問題發生。 –

+0

該數組用於動態設置變量名稱,構建表單字段和sql查詢。到目前爲止,唯一的問題是重疊的字段名稱(當使用多個表格時) – ILS

回答

2

試試這個:

$fields = array('name1', 'name2'); 

foreach($fields as $field) { 
    $field = "F" . $field; 
    $$field = false; 
} 
1

嘗試使用此:

$fields = array('name1', 'name2', 'name1', 'name2', 'name2'); 

foreach($fields as $field) { 
    while(!is_null($$field)) { 
     $field = "F".$field; 
    } 
    $$field = false; 
    var_dump($field); 
} 

輸出:

string(5) "name1" 
string(5) "name2" 
string(6) "Fname1" 
string(6) "Fname2" 
string(7) "FFname2" 

所以,你將追加F信每個重疊變量:)