好吧,我试图理解这个PHP代码是如何工作的。
<?php
$test = "success";
$primary = "test";
$id = ${$primary};
echo $id;
?>
我知道输出是"成功",但我不明白它是如何工作的。
到目前为止,我所理解的:
测试变量有字符串"成功", 主变量有字符串"test", 'id' 变量具有列表中第一个变量(测试变量)的字符串, 打印"id"变量中的字符串。
我很困惑,因为我不知道主变量在 id 变量内的大括号中做什么。
一个简单的解释将不胜感激。
这是一个称为变量变量的概念。
这意味着在运行时,如果存在多个变量指标$
,PHP 将尝试以级联方式关联它们。
例如,采用以下内容:
$a = "b";
$b = "c";
$c = "d";
echo $$$a;
PHP 将系统地浏览 echo
语句来确定实际值是什么,如下所示:
-
$$$a
等价于$$("b")
(因为$a
是"b"
) - 。这相当于
$("c")
(因为$b
是"c"
) - 。这最终相当于
"d"
在您的示例中,您被赋予了一个变量赋值,本质上类似于 ${$a}
。在 PHP 中,大括号用于隔离字符串中的变量,但可以单独用于显式表示变量,因此在这种情况下${$a}
完全等同于$$a
。
$id = ${$primary};
尝试从右到左解析 $primary
= 'test'
所以${$primary}
现在$test
所以方程变得$id = $test;
$id = $test = success
在其他用户提供的链接上了解有关变量变量的更多信息
这是一个
变量。
$test = "success";
$primary = "test";
//${$primary} means $test here, because value of $primary is "test".
//It is equal to $$primary
$id = ${$primary};
echo $id; //Prints "success"
http://php.net/manual/en/language.variables.variable.php