为什么此示例打印两次?

时间:2019-04-30 03:08:11

标签: php

在阅读有关传递变量的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

1 个答案:

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

这就是为什么你要两行[我是酒吧。]

相关问题