想象,我有一个数组中的3个变量:转换变量的名称字符串
$var1 = "a";
$var2 = "b";
$var3 = "c";
$a = array($var1, $var2, $var3);
foreach($a as $var)
{
//code that create strings with variable names and echo var1 , var2 , var3
}
这是更多钞票来做到这一点用PHP?
想象,我有一个数组中的3个变量:转换变量的名称字符串
$var1 = "a";
$var2 = "b";
$var3 = "c";
$a = array($var1, $var2, $var3);
foreach($a as $var)
{
//code that create strings with variable names and echo var1 , var2 , var3
}
这是更多钞票来做到这一点用PHP?
如果你想看看,如果你能回忆起您创建的数组变量的名字,我很抱歉告诉你这一点,但这是不可能的(至少,就像你的例子那样)。当你创建该数组时,你正在制作这些变量的副本并将它们存储在数组中。你实际上并没有指向原始变量。
几个选项的头顶。
选项1:使用变量名称作为键创建数组。
选项2:事先将变量名称分配给变量本身。例如:$var1->VAR_NAME = 'var1';
方案3:尝试一种解决方法就像一个建议这里:How to get a variable name as a string in PHP?
方案4:如果你只需要它引用原始变量,尝试捕获参考自身使用&
的对象。
希望有所帮助。
$a = array($var1, $var2, $var3);
foreach($a as $key => $value) {
echo($key . ' => ' . $value);
}
这不是我的答案:( – 2012-01-09 15:28:02
所以,我没有承诺你的问题。 – 2012-01-09 15:40:56
如果您可以将您的变量是这样的:
$array = array(
'a' => 'apple',
'b' => 'banana',
'c' => 'carrot',
'd' => 'date',
'e' => 'elephant');
可以使用key
函数检索任何类型的循环内的当前数组元素的索引/键,见#1,或使用key => value
语法在foreach()
循环,见#2:
<?php
$array = array(
'a' => 'apple',
'b' => 'banana',
'c' => 'carrot',
'd' => 'date',
'e' => 'elephant');
/* #1 */
foreach($array as $value) {
/* get the key for the item at the cursor position of the array */
$key = key($array);
print "{$key} = {$value}<br>";
/* move the cursor to the next item in the array */
next($array);
}
/* #2 */
foreach($array as $key => $value) {
print "{$key} = {$value}<br>";
}
?>
如果你只是想获得一个变量名,你不能STOR e数组中的值并维护变量名称,一旦将值放入数组中,它们将失去变量名称。
之外的阵列的,则可以使用下面的溶液(来自http://www.php.net/manual/en/language.variables.php#76245):
<?
$myVarName = "myValue";
echo var_name($myVarName) . " = {$myVarName}";
function var_name(&$var, $scope=0)
{
$old = $var;
if (($key = array_search($var = 'unique'.rand().'value', !$scope ? $GLOBALS : $scope)) && $var = $old) return $key;
}
?>
当运行$a = array($var1 ..
,这些值将被写入到$a
,和原来的符号表名,$var1
被分开存放我相信。这意味着,不,现在没有办法获取原始变量名称。你必须做到这一点的时间提前,或做一些疯狂的魔法与get_defined_vars
:
$var1 = 'a';
...
$varnames = array('var1', 'var2', 'var3');
$a = compact($varnames);
//$a now has array('var1' => 'a' ...
'array_combine()'没有实现任何内容;'compact(array('var1','var2','var3')) '(或'compact('var1','var2','var3')')返回相同的结果 – cmbuckley 2012-01-09 15:39:40
@cbuckley绝对正确,不知道我在想什么。 – 2012-01-09 15:44:20
这个问题很不清楚。你可以提供一段代码,将*变量放入数组中。 – 2012-01-09 15:22:05
同意@ÁlvaroG.Vicario,请更具体地说明您要实现的目标。 – Oldskool 2012-01-09 15:34:08