繁体   English   中英

PHP动态名称变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM