2013-06-04 57 views
0

我的函數必須處理大量的變量(20+)。由於數量增長得實在太快,我正在尋找在每一個主動變每一次的傳統聲明的改善我必須調用功能,當這樣的: MyFunction($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10......);命名多個變量以供將來在函數中使用

我想寫出更好的,模塊化的代碼,我可以有效地重複使用。作爲一種改進,是否有辦法將這些衆多變量的名稱合併爲一個單獨的「配置文件」,以便我可以在需要時更乾淨地調用此函數...比如?
[單獨的配置文件中:]
$AllOfMyVariables = 'var1,var2,var3,var4,var5,var6,var7,var8,var9,var10';

...然後簡單地調用:MyFunction($AllOfMyVariables);每當需要的?

我一直無法成功地做到這一點。我試圖通過大括號傳遞變量名稱,但似乎無法獲得正確傳遞的變量名稱/值。有什麼建議麼?

+1

你可以創建一個數組,並解析 – 2013-06-04 21:48:45

+0

好吧。它可以生活在一個單獨的配置文件,可以用於over-over?...或者,每次調用函數之前是否必須重新創建數組? –

+0

是的,它可以,不,它不需要是 – 2013-06-04 22:09:07

回答

1

你可以像這樣在數組中聲明所有的配置變量,其中鍵是變量名,值是變量的值。

$AllOfMyVariables = array(
    'var1' => 'value1', 
    'var2' => 'value2', 
    'var3' => 'vaule3'); 

該數組可以存儲在一個單獨的PHP文件,如果你喜歡,然後是require()「版當你需要它。然後你可以將這個數組傳遞給你的函數並使用提取函數。

function MyFunction($AllOfMyVariables) { 
    extract($AllOfMyVariables); 
//Do ALL the things! 
} 

現在$ VAR1 = '值1',等

+0

我喜歡這個想法,但我不太明白:因爲每個變量的值在腳本過程中發生了變化(可能在我致電之前函數),我怎樣才能正確地「預先插入」各種值到其他地方居住的數組?也許當我創建數組時,我可以用'$ value1'替換'value1'(注意'$'),以便它保持「動態」? –

+0

是的,您可以稍後修改基礎陣列。首先使用包含預設值的數組,然後可以使用'$ AllOfMyVariables ['variable_name'] ='variable value';'修改它。 (編輯:在調用'extract()'之前執行此操作。) –

+0

我可以在調用函數之前按照您的建議修改數組?或者,在函數內(但在調用提取之前)? –

0

有兩種可能性,通過user1612290提到的第一個。

第二個是由

MyFunction($arr); 

的類似的方式來使用的參數陣列,像

$arr = array($var1, $var2, ...); 

$arr = array('var1' => $var1, 'var2' => $var2, ...); 

並調用該函數是使用對象相反,所以

$object = new stdClass; 
$object->var1 = $var1; // and so on. 
0

我建議你使用一個數組,在PHP中,你可以在一個陣列

$param[0]="zero"; 
$param[1]="one"; 

增加值的數量不定......

你可以叫你的函數:

MyFunction($param); 

你可以去所有的數組:

foreach($param as $key => $value) 

數組的關鍵是$值,並在$參數值[$ key]

相關問題