1

好吧,我正试图了解这个 PHP 代码是如何工作的。

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

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

到目前为止我的理解:

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

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

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

4

3 回答 3

6

这是一个叫做变量变量的概念。

这意味着在运行时,如果$存在多个变量指标,PHP 将尝试以级联方式关联它们。

例如,采取以下措施:

$a = "b";
$b = "c";
$c = "d";
echo $$$a;

PHP 将系统地遍历echo语句以确定实际值是多少,如下所示:

  • $$$a相当于$$("b")(因为$a"b"
  • ...相当于$("c")(因为$b"c"
  • ...最终相当于"d"

在你的例子中,你被赋予了一个变量赋值,本质上,就像${$a}. 在 PHP 中,大括号用于隔离字符串中的变量,但可以单独使用大括号来显式表示变量,因此在这种情况下${$a}完全等同于。$$a

于 2013-11-02T06:52:23.850 回答
3
$id = ${$primary};

尝试从右到左解析$primary= 'test'

现在${$primary}也是$test

所以方程变成 $id = $test;

$id = $test = success

在其他用户提供的链接上了解有关变量 variables 的更多信息

于 2013-11-02T06:53:35.303 回答
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

于 2013-11-02T06:53:48.617 回答