2012-02-02 35 views
2

可能重复:
Array to named variables阵列转换为单变量

我如何转换这样

$data = array(
    'name' => 'something', 
    'another' => 'variable' 
); 

$name = 'something'; 
$another = 'variable'; 
数组

有没有办法,我可以做到这一点没有循环?

+0

你能不能给我们你正在努力实现在更高层次上的内容?这似乎是一个奇怪的要求。什么情况?也许我们可以为你提供更好的整体解决方案。 – ralfe 2012-02-02 13:27:41

+0

@ralfe这不是一个奇怪的请求必然。通过将数组传递给抓取模板文件的方法来完成大量模板,然后'提取()'这些值,以便不必通过数组名称引用它们。 – jprofitt 2012-02-02 13:29:09

+0

关于模糊的安全性猜测:您可以使用EXTR_SKIP,EXTR_PREFIX或array_intersect_key限制提取的变量。 (你知道,应该是用户输入。) – mario 2012-02-02 13:38:36

回答

3

你想要做的事情基本上是个坏主意。如果您使用来自用户的数据提取数组,则很容易破解您的网站。但如果你真的想这样做,请使用extract函数。

0

extract()可以,但抵制的冲动做如此鲁莽和不负责任的。

+0

+1,因为你是唯一一个警告说这是一个可怕的想法。 – MetalFrog 2012-02-02 13:30:37

+0

我没有看到问题,指出数据来自用户。它可能是在类或函数之间传递的内部数据。数组的创建和提取可能效率不高,但可能会出现这种情况,这是一种优雅的解决方案(尽管我还没有想到)。 – SourceMaid 2012-02-02 19:31:58

0

随着extract,该阵列中的定义每个键/值对一个新的变量:

extract($data); 

echo $name; // something 
echo $another; // variable