[英]PHP dynamic name of variable
我有这种情况:
$string = "temp";
$$string = array();
var_dump($temp);
$temp[0] = "hello";
var_dump($temp);
这样可行。 但是当使用变量变量名访问数组时,我总是得到一个空数组:
$string = "temp";
$$string = array();
$$string[0] = "prova";
var_dump($$string);
如何使用变量名访问数组?
因为当您使用$$
,意味着您要引用变量。
$string = "temp";
var_dump($$string);
在这里$$string
表示$ temp并且没有值,因此为空结果。
如果您想工作,请按照建议使用。
使用如下代码:
${$string[0]} = "prova";
var_dump(${$string[0]});
output: string(5) "prova"
要么
${$string}[0] = "prova";
var_dump($$string[0]);
output: array(1) { [0]=> string(5) "prova" }
这样您可以在PHP中使用$$
变量变量
$string = "temp";
$$string = array();
$$string[0] = "prova";//here first it get the value of $string[0] and then value of variable of string $string[0], but $string[0] is nothing here that's why you are getting empty in below line
var_dump($$string);
// To get as you want use below line
${$string}[0] = "prova";
var_dump($$string);
检查这里: https : //eval.in/536239
当您使用$$string[0]
,您将调用名为$string
的数组中的变量。 由于字符串基本上是复杂的类似于数组的对象,因此您将在位置0处调用该字符。因此,基本上,您得到的效果是:
$string = "temp";
$$string = array();
$$string[0] = "prova";
var_dump($t);
因为$string[0]
的引用是字符串“ temp”或“ t”中的第一个字符,所以您实际上只是在调用$t
。 您需要的是${$string}[0]
。
如果希望变量为数组:
$var_name = "some_var";
${$var_name} = array();
${$var_name}[0] = "some value";
${$var_name}[1] = "another value";
var_dump(${$var_name});
如果您希望变量名是一个数组:
$var_names = array();
$var_names[0] = "some_var";
$var_names[1] = "another_var";
${$var_names[0]} = "some value";
${$var_names[1]} = "another value";
var_dump(${$var_names[0]});
var_dump(${$var_names[1]});
首先是我认为您正在尝试做的一个例子。 第二个是您实际操作的示例。
或者,您可以只使用一个关联数组:
$my_vars = [
"some_var" => "some value",
"another_var" => "another value",
];
var_dump($my_vars);
//or loop
foreach ($my_vars as $key => $value)
{
var_dump($my_vars[$key]);
//or echo
echo $key . ": " . $value . "<br>";
//or set
$my_vars[$key] = "new calculated value + " . $value;
}
var_dump($my_vars);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.