我想用魔术引号回显一个属性的值。
$obj = new stdClass;
$obj->foo = 123;
echo "foo: ${obj->foo}";
此操作失败,并显示以下错误消息:
解析错误:语法错误,意外的T_OBJECT_OPERATOR 第3行的/foobar/test.php
我知道我可以这样写:
echo "foo: ".$obj->foo;
但是,在这种情况下,大括号不应该起作用吗?
答案 0 :(得分:3)
你几乎是对的:
echo "foo: {$obj->foo}";
The php reference for complex string syntax说:
带字符串的任何标量变量,数组元素或对象属性 可以通过此语法包含表示。简单地写一下 表达式与字符串外部的表达方式相同,并且 然后将其包装在{和}中。由于{无法转义,因此将使用此语法 只有当$紧跟{。
后才能被识别
在我回答的时候我也应该提到这一点,但这个表达式实际上并不需要括号。
echo "foo: $obj->foo";
应该可以正常工作。
答案 1 :(得分:0)
将$ sign移动我的朋友。
<?php
$obj = new stdClass;
$obj->foo = 123;
echo "foo: {$obj->foo}";