微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP:{$foo}和${foo} 之间有区别

参见英文答案 > Curly braces in string in PHP5个
有时您需要清楚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).

看来,任何PHP版本都没有区别
$foo = 'test';      
    var_dump("$foo");
    var_dump("{$foo}");
    var_dump("${foo}");

测试:https://3v4l.org/vMO2D

无论如何,我更喜欢“{$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

原文地址:https://www.jb51.cc/php/132533.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐