好吧,我正在尝试理解这段PHP代码是如何工作的。
<?php
$test = "success";
$primary = "test";
$id = ${$primary};
echo $id;
?>
我知道输出是“成功”但我不明白它是如何工作的。
到目前为止我的理解:
测试变量的字符串为“success”, primary变量的字符串为“test”, 'id'变量具有列表中第一个变量的字符串(测试变量), 在'id'变量中打印字符串。
我很困惑,因为我不知道主要变量在id变量中的大括号中做了什么。
一个简单的解释将不胜感激。
答案 0 :(得分:6)
这是一个名为variable variables的概念。
这意味着在运行时,如果存在多个变量指示符$
,PHP将尝试以级联方式关联它们。
例如,请执行以下操作:
$a = "b";
$b = "c";
$c = "d";
echo $$$a;
PHP将系统地通过echo
语句来确定实际值是什么,如下:
$$$a
相当于$$("b")
(因为$a
是"b"
)$("c")
(因为$b
是"c"
)"d"
在您的示例中,您将获得一个变量赋值,其实质上类似于${$a}
。在PHP中,大括号用于隔离字符串中的变量,但可以单独使用它们来明确表示变量,因此${$a}
在这种情况下完全等同于$$a
。
答案 1 :(得分:3)
$id = ${$primary};
尝试从右向左解析$primary
='test'
所以${$primary}
现在是$test
所以等式变为$id = $test;
$id = $test = success
了解有关其他用户提供的链接上的变量变量的更多信息
答案 2 :(得分:1)
这是一个变量变量。
$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"