PHP双括号字符串中的括号

时间:2013-12-29 23:53:37

标签: php string

这更像是一种更好的练习类型的问题。

我想知道在变量的双引号字符串中使用括号是不错的做法。

例如:

<?php
$Variable = 'a variable';
$SingleQuotedString = 'Single quoted string with ' . $Variable;
// Single quoted string with a variable

$DoubleQuotedString = "Double quoted string with $Variable";
// Double quoted string with a variable

$DoubleQuotedStringWithBrackets = "Double quoted string with {$Variable} in brackets.";
// Double quoted string with a variable in brackets.
?>

它不会改变简单测试的输出或代码,显然有效。我只是感到困惑,因为没有多少人这样做,我看不到建议或人们不同意,我一直在使用它们。

感谢您的反馈!

5 个答案:

答案 0 :(得分:8)

花括号是允许使用数组和对象,即:

$string = "my array value: {$foo['bar']}";

$string = "my object value: {$foo->bar}";

答案 1 :(得分:3)

最快,最干净的版本是第一个。双引号字符串中的变量......对我来说“感觉”不对。

$SingleQuotedString = 'Single quoted string with ' . $Variable;

它能派上用场的唯一情况就是你有一个

$string = "with a {$load} of {$variables} in {one} {sentence}!";

并且可读性会受到很大影响。

答案 2 :(得分:2)

括号引用字符串中的变量的真正原因是访问数组或对象中的值。 E.g。

echo "The result is {$res['foo']}"

echo "The result is {$res->foo}"

如果您不使用括号,则无效。如果您发现更容易看到括号引用的字符串,请使用它们。如果没有,则仅在需要时使用它们(取消引用数组或对象)。

答案 3 :(得分:1)

如果您的变量

之后没有空格,则需要使用括号
$a = 1;
$aa = 2;
echo "$aaa"; // prints nothing but a notice cause $aaa is not defined
echo "{$a}aa"; // prints 1aa
echo "{$aa}a"; // prints 2a

或者如果你想调用一个对象方法

echo "{$myObject->myMethod()}"; // fatal error cause $myObject is null ;) otherwise it works just fine

否则你可以使用括号。

  • 如果您的字符串中没有变量,则单引号会更快。
  • 访问数组值或对象属性不需要括号。但也许它有点容易阅读。

答案 4 :(得分:1)

这些都是风格选择,因为只要您遵守规则,您将得到相同的结果。你正在牺牲可读性,可编辑性,抗误差性和每一个的真正微小的速度。 没有公认的“最佳做法”,只是开发者的偏好,人们会热心捍卫。

我发现单引号形式嘈杂,更冗长,更不美观。我倾向于只将它用于短字符串。

我更喜欢双引号用于更长的字符串,因为它们使我能够灵活地以较少出错的方式在字符串周围移动插值。我必须使用括号 显式或需要数组或对象内的值,但总是在简洁方面犯错误。

一般而言,最好是保持一致,以最大限度地提高团队效率。