2010-08-25 81 views
0

創建變量名一般來說,我傳遞參數數組到我的功能。從字符串.. PHP

function do_something($parameters) {} 

要訪問那些我必須使用參數:$parameters['param1']

我想這樣做的,運行某種邏輯的這一功能裏面對數組轉換成普通變量的參數。我的主要原因是有時我必須傳遞一整個參數,並且必須輸入$ parameters ['..']是一個痛苦。

foreach($parameters as $key=>$paremeter) { 
    "$key" = $parameter; 
} 

我認爲這可能工作..但沒有雪茄!從一個數組

extract($parameters); 

現在,您可以直接例如訪問的變量$var這是

變量導入當前 符號表:

+2

我能明白爲什麼 - > $ paremeter :-) – 2010-08-25 19:52:34

+1

更何況,你將其分配給一個字符串(這是不可能的)... $$鍵='會的工作,但不是' 「$鍵」='... – ircmaxell 2010-08-25 20:08:54

回答

4

使用extract()

function do_something($parameters) { 
    extract($parameters); 

    // Do stuff; for example, echo one of the parameters 
    if (isset($param1)) { 
     echo "param1 = $param1"; 
    } 
} 

do_something(array('param1' => 'foo')); 
+1

,您可以通過做這樣'提取物中添加一些 「默認」($參數+陣列( '參數1'=> NULL, '參數2'=>空))'...另外一個事情雖然。如果你要直接推'$ parameters'爲'extract',我建議增加一個'array'類型提示'功能do_something(數組$參數)'防止試圖'extract'一些其他類型的... – ircmaxell 2010-08-25 19:51:10

+0

使用提取物(),特別是如果它是一個功能之外或參數來自用戶的輸入是一個很大的安全隱患。 – stillstanding 2010-08-26 01:29:06

1

只需使用extract提取數組變量鍵存在於陣列中。

0

還有就是extract功能。這是你想要的。

$array = array('a'=>'dog', 'b'=>'cat'); 
extract($array); 
echo $a; //'dog' 
echo $b; //'cat' 
3

嘗試$$key=$parameter

+0

也可以,但'extract($ parameter)'可能更容易。 – 2010-08-25 19:48:36

+1

我同意,但我想通了OP可能想知道什麼是錯的,他用的是具體做法。 – 2010-08-25 20:15:32