PHP帮助 - 只需要一个简单的解释

时间:2013-11-02 06:47:40

标签: php

好吧,我正在尝试理解这段PHP代码是如何工作的。

<?php
$test = "success";
$primary = "test";
$id = ${$primary};
echo $id;
?>

我知道输出是“成功”但我不明白它是如何工作的。

到目前为止我的理解:

测试变量的字符串为“success”,  primary变量的字符串为“test”,  'id'变量具有列表中第一个变量的字符串(测试变量),  在'id'变量中打印字符串。

我很困惑,因为我不知道主要变量在id变量中的大括号中做了什么。

一个简单的解释将不胜感激。

3 个答案:

答案 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"

http://php.net/manual/en/language.variables.variable.php