Car*_*ine 34 php syntax perl concatenation operators
为什么PHP的设计者决定使用句号/句号/"." 作为字符串连接运算符而不是更常见的加号"+"?
这有什么好处,或者有什么理由吗?或者他们只是喜欢?:O)
Ben*_*mes 35
PHP的语法受Perl的影响,是Perl .中的字符串连接运算符.
在弱类型语言中,使用不同的字符串连接和数字加法运算符是有好处的:您使用哪一个将影响语言强制变量的类型.
碰巧,Perl 6将使用波形符号~而不是点.来进行字符串连接,因为.它将用于对象成员访问.所以看来Perl的设计师现在认为这是一个糟糕的选择.
也许,在Perl和PHP早期的非面向对象时代,它似乎是一个很好的选择.也许两种语言的设计者从未设想过他们成为强大的OO语言.
至于PHP是否有一天会抛弃其->成员访问语法.,谁知道呢?
Dan*_*May 24
最明显的原因可能是PHP从Perl继承了很多语法 - 而Perl使用dot(.)进行字符串连接.
但是,我们可以深入研究它并找出为什么在Perl中实现它 - +运算符最常用于数学方程 - 它仅用于语言中的连接,其中变量类型可以定义运算符的工作方式(简单的解释,例子是C#)
var intAddition = 1 + 2;
Console.WriteLine(intAddition); // Prints 3
var stringConcat = "1" + "2";
Console.WriteLine(stringConcat); // Prints "12"
Run Code Online (Sandbox Code Playgroud)
^如您所见,+运算符用于C#中的连接和加法.
也许推理变为较低的水平,并且由于布尔代数逻辑门 - +装置OR中的逻辑门,而.被用作AND操作员-这是有意义的,当涉及到字符串连接.
有两个独立的运算符是有意义的,一个用于连接,另一个用于添加 - 不幸的是,由于其他语言,这两个运算符可能会混淆.
Pau*_*ieh 21
我不是PHP专家,但是,您如何区分最后两行呢?
$first = 100;
$second = 20;
$stringresult = $first . $second; // "10020"
$arithmeticresult = $first + $second; // 120
Run Code Online (Sandbox Code Playgroud)
Sar*_*raz 13
逻辑+用于数字.例如,一个点用于连接段落中的两个句子(字符串).因此,dot用于连接字符串.所以我相信这是合乎逻辑的.这样的方式更好......
在PHP中使用点作为字符串连接运算符可能追溯到Perl.请记住,PHP曾经只是一堆Perl脚本.
具有不同的字符串连接和加法运算符也是有意义的,尤其是在弱类型语言中.PHP中已经有足够的陷阱让你自己在脚下射击,你不需要添加另一个.
我更喜欢使用句号代替加号,因为我通常将+与数学方程联系起来.
例如 "this is a string " + 56 + 20
这对于编译器/解释器和开发人员来说都会非常混乱.
但是,对于连接运算符使用完全停止的缺点是它只是屏幕上的一个点,有时您无法看到它是在字符串中还是在字符串外部.
这不回答问题,只是想分享一些东西.
从PHP手册:字符串运算符,有人发布了这个我觉得很有趣.注意空间如何在输出中起作用.
摘录:
如果您尝试使用连接运算符添加数字,则结果将是这些数字作为字符串的结果.
<?php
echo "thr"."ee"; //prints the string "three"
echo "twe" . "lve"; //prints the string "twelve"
echo 1 . 2; //prints the string "12"
echo 1.2; //prints the number 1.2
echo 1+2; //prints the number 3
?>
Run Code Online (Sandbox Code Playgroud)