如何在PHP中为外部访问设置foreach循环内的变量?

如何在PHP中为外部访问设置foreach循环内的变量?,php,arrays,variables,Php,Arrays,Variables,如果我有一个数组 $places = array('year' => '2012', 'place' => 'school'); 在PHP中有什么方法可以做到这一点吗 foreach ($places as $key => $value) { $key = $value } 但是,变量是基于键的名称设置的 例如,变量将像这样可用 echo $year; 2012 echo $place; school 你为什么不能这样做 <?php $places = a

如果我有一个数组

$places = array('year' => '2012', 'place' => 'school');
在PHP中有什么方法可以做到这一点吗

foreach ($places as $key => $value) 
{
    $key = $value
}
但是,变量是基于键的名称设置的

例如,变量将像这样可用

echo $year;
2012
echo $place;
school

你为什么不能这样做

<?php
$places = array('year' => '2012', 'place' => 'school');
echo $places['year'];// prints 2012 This is also synonymous to a variable
使用提取

extract($places)

echo $year;

echo $place;
或者,您可以使用变量:

foreach ($places as $key => $value) 
{
  $$key = $value //note the $$
}

你把事情弄得很复杂,因为你可以通过键直接调用它。例如
echo$places['year']
$year=$places['year']
这样的做法通常不被鼓励?我之所以想尝试这样做,是因为我有一个相当长的函数,我宁愿引用名称较短的变量,而不必一直在后面键入数组键和值。除非您的数组是多维数组,否则请尽可能简单,就像我说的,您可以使用
$year=$places['year']
或者下面的答案是
extract()
我自己会称
extract
“一般不鼓励”。