字符串运算符"."

<?php
var_dump(1.2);
var_dump(1 . 2);
var_dump(1. . .2);
var_dump(1...2);
?>

运行这个实例:
图片描述
会的请解释下。

阅读 2.2k
2 个回答

直接识别为浮点数
连接字符串 1 + 2
左右两边的点被解释成小数点 .2 被理解成0.2 , 1.还是 1 , 中间还是字符串连接,加不加空格对解析没有影响。

测试了下:

  • var_dump(1.2); 这个不用说, 直接就是一个float 数字
  • var_dump(1 . 2); . 在当两边都有空格的时候(即非数字字符), 他就是连接字符了. 所以,这里就是1跟2 的一个字符串拼接 => 12
  • var_dump(1. . .2); 这里就得先说说优先级问题了. 当点跟数字紧紧挨着的时候. 那么就是小数点.
    所以 1. 就是 1.0,而 .2就是 0.2. 在打印的时候, 小数点后面的末尾0 都是会被省略的. 所以 var_dump(1.) => float(1). 再然后就是中间的那个 .. 两边都有空格,那么就将两边的值都转换成字符串. 所以就变成了 1 拼接 0.2 , 即 10.2 的字符串
  • var_dump(1...2); 分析同上.只是说中间一个点两边的空格变成了小数点(非数字字符).那么就变成两个数字字符的拼接.

说到这里,其实就是类似运算符的优先级关系.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题