PHP语法$var1->$var2表示什么?

8
以下语法的解释是什么?
$var1->$var2 // Note the second $
3个回答

18
您正在调用一个名为$var2的值与$var1属性同名的属性。

例如:

$var2 = "name";

// The following are equivalent
$var1->name;
$var1->$var2;

10

$var1 是一个对象。

$var2 可能是 $var1 中的一个变量名。

如果 $var2="test";,则被评估为:

$var1->test;

你可以用各种方式来实现这个:

$test = array();
$name="test";
print_r($$name); // Prints array();

$test = new stdClass;
$test->hello = "hi";
$name2="hello";
echo $test->$name2; // Echos hi

你甚至可以变得非常花哨:

echo $$name->$name2; // Echos hi

1
双美元符号是什么意思? - CodyBugstein
你能否提供一个带有else的get/post示例? - i am me
如果 $foo="bar" 并且 $bar="biz",那么 $$foo 将返回 "biz",因为双美元符号告诉计算机获取变量名为 foo 值的变量。基本上,在 $$foo 中,在你的脑海中将 $foo 替换为 bar,你就得到了 $bar。请注意,在你的脑海中替换后,$bar 中的 $$$foo 中保留的第一个 $。https://dev59.com/lnE85IYBdhLWcg3wkkU8 - Abraham Murciano Benzadon

2
它的意思是在对象中动态查询属性。
class A {
  public $a;
}

// static property access
$ob = new A;
$ob->a = 123;
print_r($ob);

// dynamic property access
$prop = 'a';
$ob->$prop = 345; // effectively $ob->a = 345;
print_r($ob);

所以$var1是某个对象的实例,->表示访问该对象的成员,$var2包含属性的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接