有时您需要向PHP说明实际上变量名称是什么。我发现一位同事和我的做法略有不同。
假设您有一个变量$foo
并希望输出附加了_constant_string的变量
我一直在使用
return "<input type='hidden' name='${foo}_constant_string' value='true' />";
而我的同事正在使用
return "<input type='hidden' name='{$foo}_constant_string' value='true' />";
(稍加设计的例子来简化它)。
我的快速测试没有发现明显的差异,但我很好奇:有区别吗?是否有理由偏爱另一个?
编辑: 我上面的例子使用了字符串,但我的问题更为笼统 - 我应该明确这么说。我知道你可以使用花括号进行转义,但是如果在两种使用方式之间存在(在任何情况下)差异,我都没有找到具体的观点。我得到了答案:没有字符串(这是“重复”帖子的内容),但是用于数组和对象(感谢@dragoste)。
答案 0 :(得分:7)
不,没有别的。
var editorControl = new EditorControl();
var tmp = editorControl.xxxx.ActualHeight;
另一种方法是将它用于变量:
// Works, outputs: This is fantastic
echo "This is {$great}";
echo "This is ${great}";
或者对于数组:
$foo = 'test';
$test = 'foo';
var_dump("{${$foo}}"); //string(3) "test"
答案 1 :(得分:7)
看来,任何PHP版本都没有区别
$foo = 'test';
var_dump("$foo");
var_dump("{$foo}");
var_dump("${foo}");
无论如何,我更喜欢"{$foo}"
,因为我觉得它更具可读性,并且适用于其他语法不适用的许多其他情况。
作为示例,让我们尝试访问对象属性:
var_dump("$foo->bar"); //syntax error
var_dump("{$foo->bar}"); // works great
var_dump("${foo->bar}"); //syntax error
同样的情况是数组。
http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing.complex
答案 2 :(得分:0)
以下声明之间没有区别 -
echo "This is {$great}";
echo "This is ${great}";
两个陈述的输出都是相同的。请检查以下示例 -
$great = 'answer';
echo "This is {$great}"."\n";
echo "This is ${great}";
Output:-
This is answer
This is answer