我对这两种代码感到困惑并想知道它们之间有什么区别:
$object->$lol
// and
$object->lol
答案 0 :(得分:4)
$object->lol
将指向对象类中定义的某些属性:
class SomeClass {
public $lol = 'some value';
}
$object = new SomeClass();
echo $object->lol; //will yield 'some value'
$object->$lol
将指向对象类定义的某些属性,但会根据$lol
的值访问正确的属性:
class SomeClass {
public $lol = 'some value';
public $random = 'random value';
}
$lol = 'random';
$object = new SomeClass();
echo $object->lol; //will yield 'some value'
echo $object->$lol; //will yield 'random value'
答案 1 :(得分:3)
$object->lol
访问lol
对象上名为$object
的实例变量。
$object->$lol
访问名称包含在$lol
变量中的实例变量。它也可以在$object
对象上访问。
答案 2 :(得分:3)
AFAIK,它的工作原理如下:
$var = "var2";
$var2 = "hello world";
echo $$var; // This returns "hello world"
所以,我假设$ object-> $ lol获取带有$ lol变量名称的变量。
答案 3 :(得分:2)
第一个就像
$lol = 'foo';
$object->{$lol} == $object->foo;
第二个是定期财产访问。
答案 4 :(得分:1)
我会解释一下,看看这段代码:
<?php
$var1->"hello";
$var2->$var1;
?>
如果我们进行打印或回显$ var1将显示&#34;你好&#34;但是在$ var2中我们会看到&#34;你好&#34;因为$ var1和$ var2是相同的。
在第二个代码中:
<?php
$var1->"hello";
$var2->"var1";
?>
现在我们打印$ vare1,它会显示&#34;你好&#34;但$ var2将显示&#34; var1&#34;。我希望这可以帮助您解决问题。