PHP动态变量名

时间:2016-03-14 12:54:59

标签: php

我遇到这种情况:

$string = "temp";
$$string = array();

var_dump($temp);

$temp[0] = "hello";
var_dump($temp);

有效。但是当使用变量名称访问数组时,我总是得到一个空数组:

$string = "temp";
$$string = array();

$$string[0] = "prova";
var_dump($$string);

如何使用变量名访问数组?

3 个答案:

答案 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" } 变量变量

Reference Link

答案 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);

点击此处:https://eval.in/536239

答案 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);