2010-08-25 79 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