加号并不像您想象的连接字符串那样“被广泛接受”。有很多语言不使用它,包括Perl和C,因为这些是PHP的根源所在,所以PHP效仿是有道理的。许多语言甚至没有运算符;你必须使用一个函数。concat()
PHP是弱类型的,当它看到加号或点时,它会进行隐式类型转换。这意味着,如果这样做,PHP 将设置为 。如果使用点串联运算符,则结果显然会大不相同。如果您有 .,则同样适用。这将为您提供 ,但将其更改为加号,您将获得完全不同的结果。$x = "45 inches" + "20 inches";
$x
65
$y = 5 . 10;
510
此外,从逻辑上思考,加号的反面是减号。但这并不容易映射到串联。(我见过一种语言尝试过,但它真的没有多大意义)
你对加号作为串联器的偏好纯粹是因为在学习一门新语言时对变化的抵制(这是一件很常见的事情 - 我知道有些人最初讨厌Python,因为它缺乏大括号!
作为一个长期使用多种语言编程的人,我可以告诉你,我更喜欢有一个明确的串联运算符。在松散类型的语言中使用相同的运算符进行加法和串联是自找麻烦;事实上,我会说这是Javascript最大的缺陷之一(这来自一个通常是Javascript粉丝的人)。
Python是stronlytyped的,这意味着它可以使用加号作为加法和串联运算符,因为它迫使你使用相同的类型;你不能在Python中向字符串添加整数;如果需要,则必须显式地强制转换类型,因此没有歧义,至少对编译器没有歧义。
然而,对于读者来说,仍然存在歧义 - 通过阅读代码中任何给定的加号的含义,可能不会立即明显看出。在Python中解决这个问题更容易,但就我个人而言,我仍然希望有一个明确的运算符。但这只是个人喜好。如果我使用Python,Javascript或Visual Basic,那么我必须按照他们的规则工作。