从数组列表创建变量名称

时间:2011-01-03 13:54:12

标签: php arrays

如何基于数组动态创建变量名?我的意思是我想用foreach遍历这个数组并创建一个新变量$elem1$other等等。这可能吗?

$myarray = array('elem1', 'other', 'elemother', 'lastelement');
foreach ($myarray as $arr){
    //create a new variable called $elem1 (or $other or $elemother, etc.) 
    //and assign it some default value 1
}

4 个答案:

答案 0 :(得分:3)

foreach ($myarray as $name) {
   $$name = 1;
}

这将创建变量,但它们仅在foreach循环中可见。感谢JanHančič指出这一点。

答案 1 :(得分:3)

goreSplatter的方法有效,你应该使用它,如果你真的需要它,但这里只是踢的替代方案:

extract(array_flip($myarray));

这将创建最初将存储整数值的变量,对应于原始数组中的键。因此,你可以做一些古怪的事情:

echo $myarray[$other]; // outputs 'other'
echo $myarray[$lastelement]; // outputs 'lastelement'

非常有用。

答案 2 :(得分:2)

这样的事情可以解决问题

$myVars = Array ();
$myarray = array('elem1', 'other', 'elemother', 'lastelement');
foreach ($myarray as $arr){
  $myVars[$arr] = 1;
}

Extract ( $myVars );

我们在这里做的是创建一个具有相同键名和值1的新数组,然后我们使用extract()函数将数组元素“转换”为“常规”变量(键成为名称变量,值变为值。)

答案 3 :(得分:0)

使用array_keys($array)

$myVars = Array ();
$myarray = array('elem1', 'other', 'elemother', 'lastelement');

$namesOfKeys = array_keys($myVars );
foreach ($namesOfKeys as $singleKeyName) {
  $myarray[$singleKeyName] = 1;
}

http://www.php.net/manual/en/function.array-keys.php