php:echo逗号和点号的区别

我们都知道.echo中是可以用逗号来连接字符串的.并且经过测试.这样的连接字符串方式要比直接用点号要快.

比如:
echo ‘abc‘.‘def‘; //用点号连接字符串

echo ‘abc‘,‘def‘; //用逗号连接字符串

也许很多人都知道逗号要比点号快.但是不知道为什么.更不知道这两者到底有什么区别.
那么下面我们就举一些例子.来认清楚他们之前的区别.
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
   
从上面的例子我们可以看出.如果将一个字符串强制转换成一个数字.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
结果证明.我们的设想是正确的.
那么为什么使用逗号就没有上面的问题了呢?
手册上说了.用逗号是multiple parameters .
也就是说是多参数.换句话说.
逗号分隔开的就相当于是N个参数.也就是说把echo当个函数用.
这样的话.echo会对每个参数先进行计算.最后再进行连接后输出.所以我们用逗号就不存在上面的问题了

时间: 2024-10-23 09:37:10

php:echo逗号和点号的区别的相关文章

PHP - 逗号和点号的区别

php点号(.)和逗号(,)作用都是链接字符串 echo '点'.'号': //用点号连接字符串 输出 点号 echo '逗','号': //用逗号连接字符串 输出 逗号 效果是一样的,但还是有很大区别 echo '1+99=' . 1+99: //输出100 输出的结果是100 而不是1+99=100 echo "1+99=" . 99+1: //输出2 当把1和99换下位置.结果就变成了2 当把点号换成逗号 echo '1+99=' ,99+1: //输出 1+99=100 ech

php基础篇-双引号、单引号的区别

php在以前的认知中,以为单引号和双引号没有什么区别,如果外面使用了单引号,那么里面就是用双引号,如果外面使用了双引号,里面就使用单引号,一直以为单引号.双引号就是这点区别,但是还是有一点区别的. 区别就是,双引号串中的内容可以被解释而且替换,而单引号串中的内容总被认为是普通字符. <?php $str ="hello world!"; echo "$str"; echo '$str'; 结果会输出:hello world!$str php基础篇-双引号.单引

微信公众平台开发教程 订阅号与服务号的区别

为了消除大家对订阅号与服务号的疑问,特总结如下: 功能点 介绍 订阅号 服务号 注册 注册账号 个人信息 个人信息和企业相关信息 展示 在手机端展现方式 显示在订阅号文件夹中 跟微信好友一样显示 收发消息 接受和发送消息,包括: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 音乐消息 6 图文消息 有 有 事件响应 获取关注.取消关注.自定义菜单点击事件,并产生响应 有(自定义年菜单点击事件,取决于自定义菜单权限) 有 群发消息 向全部客户或指定客户发送消息 每天一条 每月一条 自

微信公众号 订阅号与服务号的区别

1. 说明 微信公众平台有4类账号:订阅号.服务号.企业号及小程序. 订阅号和服务号统称为公众号. 2. 区别 2.1 主要区别 订阅号的注册主体可以为个人,但现在已关闭个人认证.服务号的注册主体不能为个人. 表:主要区别 说明 订阅号 服务号 账号说明 偏于为用户传达资讯(类似报纸杂志) 偏于服务交互(类似银行,114,提供服务查询) 注册主体 政府.媒体.企业.其他组织.个人 政府.媒体.企业.其他组织 消息显示位置 显示在对话列表内的[订阅号]里 直接显示在对话列表内 群发消息上限 每天有

微信订阅号和服务号的区别

微信公众平台现在已分成订阅公众号和服务公众号两种类型.许多商家都会不知道微信订阅号和服务号的区别,下面我们就来和大家具体说说. 一.服务号的功能 公众平台服务号,是公众平台的一种帐号类型,旨在为用户提供服务. 1.1个月(30天)内仅可以发送1条群发消息. 2.发给订阅用户(粉丝)的消息,会显示在对方的聊天列表中. 3.在发送消息给用户时,用户将收到即时的消息提醒. 4.服务号会在订阅用户(粉丝)的通讯录中. 5.可申请自定义菜单.这时,如果不清楚怎么申请,可联系微信第三方机构“美基营销”帮忙.

C++ 箭头-&gt; 双冒号:: 点号.操作符区别

点 . 如果变量是一个对象或者对象引用,则用它来访问对象成员. 箭头 -> 如果变量是一个对象指针,则用它来访问对象成员. 双冒号 :: 如果操作目标是一个具有名空间的标识符,则用它来访问其名空间内的东西.具有名空间的东西很多,除了纯粹的namespace外,正如你所知道的还有class,struct,union.C++ 箭头-> 双冒号:: 点号.操作符区别

lua中冒号(:)与点号(.)的区别

在lua开发中我们经常会混淆这两者之间的区别,下面通过一个示例来解释: 1 Class = {} 2 Class.__index = Class 3 4 function Class.new(x,y) 5 local cls = {} 6 setmetatable(cls, Class) 7 cls.x = x 8 cls.y = y 9 return cls 10 end 11 function Class:test() 12 -- 等价于 13 -- function Class.test(

VB中 &#39;&amp;&#39; 和 &#39;+&#39; 号的区别

释义 &(Ampersand)是英语单字and之代表符号,亦可用作中文中的“和”.“与”之代表符号.这个符号源于拉丁文的et的连写. 可读做 ampersand,即 "and per se and",意思是 "and [the symbol which] by itself [is] and". '+'常见运算方法(几乎所有高级语言)1)数字 + 数字 :执行数学加法.例如 11 + 22 = 332)字符串 + 字符串 : 字符串连接.例如 "1

php的echo(),print(),print_r()的区别

echo() 和 print() 都属于语言结构(http://my.oschina.net/banbo/blog/295580),可不带括号:echo $a;  print $a; (1) echo 可以一次输出多个值,多个值直接用逗号分隔,如:echo $a,$b; 没有返回值,支持表达式:echo $a + 1,$b + 2;. (2) print 不可以一次输出多个值,print $a; 有 int 返回值,打印正确返回 1, 打印失败返回 0,支持表达式:print $a + 1.ec