在阅读有关传递变量的php文档时,似乎应该打印此功能
i am bar
i am bar
文档说; “当用双引号或heredoc指定字符串时,将在其中解析变量。”
功能
<?php
class foo {
var $bar = 'I am bar.';
}
$foo = new foo();
$bar = 'bar';
$baz = array('foo', 'bar', 'baz', 'quux');
echo "{$foo->$bar}\n";
echo "{$foo->{$baz[1]}}\n";
?>
有人可以帮助我理解
echo "{$foo->{$baz[1]}}\n";
为什么还要打印“我是酒吧”?为什么$bar = 'bar'
被声明,它的意义是什么?删除后,该文件仅打印一次i am bar
,但是我不确定为什么因为第二个echo语句似乎应该打印$ baz变量数组?
https://www.php.net/manual/en/language.types.string.php#language.types.string.parsing
答案 0 :(得分:2)
您声明 $ foo =新的foo(); 然后$ foo-> bar是“我是酒吧”。
所以 第一次是“我是酒吧”。很明显。 第二次“我是酒吧”。是php变量的窍门。
PHP会将以下内容翻译为
echo "{$foo->{$baz[1]}}\n";
==>
echo "{$foo->{$bar}}\n";
==>
echo "{$foo->bar}\n";
==>
echo "I am bar.";
这就是为什么你要两行[我是酒吧。]