【发布时间】:2011-03-11 00:38:42
【问题描述】:
可能重复:
Why is the php string concatenation operator a dot (.)?
我一直在想——
为什么 PHP 使用 .运算符来连接字符串而不是 + 符号?
这是提高脚本评估性能的某种方式吗?
谢谢
【问题讨论】:
可能重复:
Why is the php string concatenation operator a dot (.)?
我一直在想——
为什么 PHP 使用 .运算符来连接字符串而不是 + 符号?
这是提高脚本评估性能的某种方式吗?
谢谢
【问题讨论】:
否则,在这种情况下会发生什么?
$str = "4";
$num = 2;
$result = $str + $num;
如果您希望结果为“42”怎么办?
澄清
上面回答了“为什么除了操作符+之外还有操作符.?”这个问题。如果预期的问题是“为什么运算符+ 不执行字符串连接?” (了解需要成为另一个运营商才能接管当前行为+),那么我很乐意删除我的答案以支持更相关的答案。
【讨论】:
. 进行字符串连接的原因。有些语言使用+ 进行字符串连接,"4"+2 产生"42"。
"4" + 2 == 6,所以这是先有鸡还是先有蛋。
4 + 2 === 6、"4" + 2 === "42"、4 + "2" === "42" 和 Number("4") + 2 === 6。
@ 以便 "4" @ "2" == 6。
在决定它(PHP)会做很多自动装箱之后,几乎没有其他选择,然后使用 2 个不同的运算符来“添加”和“连接”。
“+”用于添加很明显,@Gumbo 解释了为什么“。”被选中了。
var_dump("12ab" + "34cd"); // 46
var_dump("12ab" . "34cd"); // "12ab34cd"
所以你需要告诉你想要它做的语言,因为它可以做到这两个:)
其他语言没有这个问题,因为它们不允许从字符串到整数的隐式转换。
因此,如果您编写 "4" + 2,该语言会告诉您它不能那样做,您需要编写:intval("4") + 2,它知道该怎么做。
【讨论】:
因为Perl used the . for string concatenation 和 PHP 深受 Perl 语法的影响。
【讨论】: