请问老师这个是为了避免语法错误,而改变优先级的吗

请问老师这个是为了避免语法错误,而改变优先级的吗

$a=1;

$b=1;

echo $a.$b=$a+$b;//12

echo $a.'+'.$b=$a+$b;//1+2

按理讲 '.' 的优先级高些,=的低,但是如果先运算 '.' 的话,就语法错误了,所以才先运算=的吗?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
guly 2018-06-15 10:24:28

你好,
 . 号是字符串连接符, + 就是加 ,是算数运算符,在c语言中 .的相当于运算符优先级比+高

http://img1.sycdn.imooc.com//climg/5b2321340001e41808100720.jpg

但是在PHP中.不是运算符,只是连接符,

http://img1.sycdn.imooc.com//climg/5b23217300018bc810650796.jpg


所以 $a.$b=$a+$b  //12

echo $a.'+'.$b=$a+$b; //中+加上引号表示为字符串而不是运算符,表达式的计算规则是先运算右边,在计算左边,如果解决您的问题请采纳,祝学习愉快!


T时间的朋友 2018-06-15 00:43:01
<?php
$a=2;
$b=3;
echo $a*$b=$a+$b;

结果输出10;

*的优先级大于=,这里为什么先计算$b=$a+$b呢?或者和运算符的结合方向有关系吗?

按道理应该报错,或者需要写成:echo $a*($b=$a+$b)

imooc的铁粉 2018-04-02 09:46:48

建议参考: http://www.myexception.cn/php/518862.html

好帮手慕查理 2018-04-01 10:45:26

您好,此处的.是字符串连接符,并不是运算符。祝学习愉快!

  • 提问者 落叶伴秋风 #1
    字符串连接符是的,但是优先级连接符应该比等号高啊,那么上面例子中为什么是先赋值在用连接符?就这点我现在搞不明白
    2018-04-01 11:38:00
  • <?php $a=2; $b=3; echo $a*$b=$a+$b; //结果为10 同问:*的优先级大于=,这里为什么先计算$b=$a+$b呢?
    2018-06-15 00:37:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师