探讨:PHP中逗号与点号的区别

WBOY
Freigeben: 2016-07-25 08:57:04
Original
1290 Leute haben es durchsucht
与大家一起探讨,在php编程中,逗号与点号区别的那点事,有需要的朋友,不妨参考下哦。

在php中,逗号要比点号快,究竟原因有几何呢?本文将为大家一一说来。

先看代码:

<?php
echo 'abc'.'def'; //用点号连接字符串
echo 'abc','def'; //用逗号连接字符串
//by bbs.it-home.org
?>
Nach dem Login kopieren

通过实例了解下php中逗号与点号的区别。

代码: echo '1+5=' . 1+5;

看看上面的.输出的结果是6..而不是1+5=6.有些神奇吧?

一个神奇的例子: echo "1+5=" . 5+1; //输出2 把5和1换下位置.结果就变成2了. 为什么会这样.难道在PHP中加法是没有交换律的?当然不是.. 我们先不去想为什么.如果我把上面的点号换成逗号试下. echo '1+5=' , 5+1; //输出 1+5=6 echo '1+5=' , 1+5; //输出 1+5=6

可以看出.只有使用逗号才可以得到意料中的结果. 那为什么点号就不行呢?逗号为什么就行呢? echo ('1+5' . 5)+1; //输出2 给前面的加个括号后.得到的结果是一样的。 证明PHP是先连接字符串再进行加法计算了,按照从左向右的方向进行的。

既然是先连接的字符串.那么就应该是"1+55"了.然后再用这个字符串加上1.那为什么就会输出2呢? 这个跟PHP中字符串变成数字的机制是相关的。

来看下面的例子:

 echo (int)'abc1';  //输出0
 echo (int)'1abc'; //输出1
 echo (int)'2abc'; //输出2
 echo (int)'22abc'; //输出22
Nach dem Login kopieren

从上例可以看出: 如果将一个字符串强制转换成一个数字,PHP会去搜索这个字符串的开头,如果开头是数字就转换,如果不是就直接返回0。

回到刚才的1+55,既然这个字符串是1+55,所以强制类型转换后就应该是1了,在此基础上加1,当然是2了。 验证一下:

echo '5+1=' . 1+5; //输出10
 echo '5+1=' . 5+1; //输出6
 echo '1+5=' . 1+5; //输出6
 echo '1+5=' . 5+1; //输出2
Nach dem Login kopieren

证明是正确的. 那么为什么使用逗号就没有上面的问题了呢? 手册上说了.用逗号是multiple parameters. 也就是说是多参数,即逗号分隔开的就相当于是N个参数.也就是说把echo当个函数用. 如此,echo会对每个参数先进行计算,最后再进行连接后输出,因此用逗号则不存在以上问题。



Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage