我遇到这种情况:
$string = "temp";
$$string = array();
var_dump($temp);
$temp[0] = "hello";
var_dump($temp);
有效。但是当使用变量名称访问数组时,我总是得到一个空数组:
$string = "temp";
$$string = array();
$$string[0] = "prova";
var_dump($$string);
如何使用变量名访问数组?
答案 0 :(得分:2)
因为当你使用nameC
时,它意味着你在引用变量。
$$
这里 $string = "temp";
var_dump($$string);
表示$ temp且没有值,因此它是空结果。
如果您想工作,请按照建议使用。
使用以下代码:
$$string
或
${$string[0]} = "prova";
var_dump(${$string[0]});
output: string(5) "prova"
这样你可以在php
中使用${$string}[0] = "prova";
var_dump($$string[0]);
output: array(1) { [0]=> string(5) "prova" }
变量变量
答案 1 :(得分:1)
$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);
答案 2 :(得分:1)
当您使用$$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);