如何基于数组动态创建变量名?我的意思是我想用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
}
答案 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;
}