【问题标题】:PHP string operations [duplicate]PHP字符串操作[重复]
【发布时间】:2011-03-11 00:38:42
【问题描述】:

可能重复:
Why is the php string concatenation operator a dot (.)?

我一直在想——

为什么 PHP 使用 .运算符来连接字符串而不是 + 符号?

这是提高脚本评估性能的某种方式吗?

谢谢

【问题讨论】:

    标签: php string


    【解决方案1】:

    否则,在这种情况下会发生什么?

    $str = "4";
    $num = 2;
    
    $result = $str + $num;
    

    如果您希望结果为“42”怎么办?

    澄清

    上面回答了“为什么除了操作符+之外还有操作符.?”这个问题。如果预期的问题是“为什么运算符+ 不执行字符串连接?” (了解需要成为另一个运营商才能接管当前行为+),那么我很乐意删除我的答案以支持更相关的答案。

    【讨论】:

    • 请投反对票的先生解释一下?
    • 这不是 PHP 使用 . 进行字符串连接的原因。有些语言使用+ 进行字符串连接,"4"+2 产生"42"
    • @Gumbo:当然。但是你需要另一个运营商来启用"4" + 2 == 6,所以这是先有鸡还是先有蛋。
    • @Jon:这取决于隐式类型转换策略。例如,在 JavaScript 中,只有当两个操作数都不是数字时,隐式类型转换才会转换为字符串:4 + 2 === 6"4" + 2 === "42"4 + "2" === "42"Number("4") + 2 === 6
    • @Gumbo:这并不能解决问题。您仍然需要一些运算符 @ 以便 "4" @ "2" == 6
    【解决方案2】:

    在决定它(PHP)会做很多自动装箱之后,几乎没有其他选择,然后使用 2 个不同的运算符来“添加”和“连接”。

    “+”用于添加很明显,@Gumbo 解释了为什么“。”被选中了。

    var_dump("12ab" + "34cd"); // 46
    var_dump("12ab" . "34cd"); // "12ab34cd"
    

    所以你需要告诉你想要它做的语言,因为它可以做到这两个:)


    其他语言没有这个问题,因为它们不允许从字符串到整数的隐式转换。

    因此,如果您编写 "4" + 2,该语言会告诉您它不能那样做,您需要编写:intval("4") + 2,它知道该怎么做。

    另见此处

    why-is-the-php-string-concatenation-operator-a-dot

    【讨论】:

      【解决方案3】:

      因为Perl used the . for string concatenation 和 PHP 深受 Perl 语法的影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-13
        • 2015-01-25
        • 1970-01-01
        • 1970-01-01
        • 2015-05-14
        • 1970-01-01
        • 2017-08-02
        • 2014-02-27
        相关资源
        最近更新 更多