Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的点运算符_Php_Operators - Fatal编程技术网

PHP中的点运算符

PHP中的点运算符,php,operators,Php,Operators,直到今天有人问我一个问题之前,我一直以为我对已经很了解了。问题看起来很简单: echo 100...100; 乍一看,我认为这会造成语法错误。但是当我运行代码并看到结果时,我完全困惑了。结果是 1000.1 所以我想知道这是怎么发生的 谢谢。这样读: (100.) . (.100) 因此,它包含100和0.1您可以将其理解为echo 100。0.1假设您的意思是 echo 100...100; 这是因为PHP的美妙之处。:) 本声明被理解为 100. . .100 这相当于 100.0

直到今天有人问我一个问题之前,我一直以为我对
已经很了解了。问题看起来很简单:

echo 100...100;
乍一看,我认为这会造成语法错误。但是当我运行代码并看到结果时,我完全困惑了。结果是

1000.1
所以我想知道这是怎么发生的

谢谢。

这样读:

(100.) . (.100)

因此,它包含
100
0.1

您可以将其理解为
echo 100。0.1

假设您的意思是

echo 100...100;
这是因为PHP的美妙之处。:) 本声明被理解为

100. . .100
这相当于

100.0 . 0.1


实际上,这只适用于没有引号的情况:

echo "100...100";   100...100  << with quotes the . is just a char

echo 100 . 100;     100100     << two concatenated strings "100"

echo 100.100;       100.1      << 100.100 is just a number

echo 100...100;     1000.1     << what you asked

echo 100. . .100;   1000.1     << what PHP actually interprets

echo“100…100”;100…100@Gordon,排版错误修复,对不起,这不应该很接近。这是一个公平的新问题users@yes最后的投票源于OP之前修正了使问题变得虚假的打字错误。是的,它在修复之后不应该关闭。不,实际上,没有代码< 0 >代码>中间,它来自<代码> 1=0.1 。然后<代码>回声100。100 < /代码>应该是相同的结果,因为它等于<代码>(100)。(100)
?但它不是。cxy:显然
100。
仅当字符串紧跟在
之后时才会转换为字符串。否则将解析为
100.0
@Spawn nope。使用
100..100
是模棱两可的。这可能意味着
100。100
(=>致命)或
100。100
(=>1000.1)或
100。100
(=>100100)<代码>100…100
不含糊。当解析器看到
100..100
时,它必须在这三者之间做出选择,并显然选择致命的。@Gordon,似乎PHP将此解析为您的第一个(语法错误)。可能是因为小数点运算符的优先级高于串联运算符。
'1000.1'
echo "100...100";   100...100  << with quotes the . is just a char

echo 100 . 100;     100100     << two concatenated strings "100"

echo 100.100;       100.1      << 100.100 is just a number

echo 100...100;     1000.1     << what you asked

echo 100. . .100;   1000.1     << what PHP actually interprets