在PHP中从数组键创建新变量

Der*_*iel 46 php arrays variables

假设我有一个数组,如下所示:

$foo = array('first' =>  '1st',
             'second' => '2nd',
             'third' =>  '3rd');
Run Code Online (Sandbox Code Playgroud)

如何从数组中选择键并使它们成为自己的变量?例如,数组$foo将变为:

$first = '1st';
$second = '2nd';
$third = '3rd';
Run Code Online (Sandbox Code Playgroud)

我问这个因为我正在创建一个MVC框架来帮助我的OOP,我希望用户将一个变量传递给View加载函数,这将允许用户在模板中使用变量而不必知道数组是什么被称为.

例如:

$array = array('title' =>  'My blog!' [...]);
$this->load->view('view.php', $array);
Run Code Online (Sandbox Code Playgroud)

view.php:

echo $title;
Run Code Online (Sandbox Code Playgroud)

输出:

我的博客!

xil*_*il3 24

你可以这样做:

foreach($foo as $k => $v) {
  $$k = $v;
}
Run Code Online (Sandbox Code Playgroud)


Ham*_*ish 6

一个简单的方法是使用变量变量:

foreach($foo as $key => $value) {
   $$key = $value;
}

echo $first; // '1st'
Run Code Online (Sandbox Code Playgroud)

但请注意,这通常是不鼓励的.最好更改模板系统以允许变量在模板中作用域.否则你可能会遇到碰撞问题,必须测试它们的存在等.