PHP字符串数字连接搞砸了

我在这里得到了一些php代码:

<?php
echo 'hello ' . 1 + 2 . '34';
?> 

其输出234,

但是当我在“你好”之前加上数字11时:

<?php
echo '11hello ' . 1 + 2 . '34';
?> 

它输出1334而不是245(我预期它),为什么?


真奇怪...

<?php
echo '11hello ' . (1 + 2) . '34';
?>

要么

<?php
echo '11hello ', 1 + 2, '34';
?>

修复问题。


UPDv1:

最后设法得到正确答案:

'hello' = 0 (不包含前导数字,所以PHP假定它为零)。

所以'hello' . 1 + 2 'hello' . 1 + 2简化为'hello1' + 22 ,因为'hello1'前导数字也不为零。


'11hello ' = 11 (包含前导数字,所以PHP假设它是11)。

所以'11hello ' . 1 + 2 '11hello ' . 1 + 2简化为'11hello 1' + 2因为11 + 213


UPDv2:

http://www.php.net/manual/en/language.types.string.php

该值由字符串的最初部分给出。 如果字符串以有效的数字数据开头,则这将是使用的值。 否则,该值将为0(零)。 有效的数字数据是一个可选符号,后跟一个或多个数字(可选包含一个小数点),后跟一个可选的指数。 指数是一个'e'或'E',后跟一个或多个数字。


点运算符与+和 - 具有相同的优先级,这可能会产生意外的结果。

这在技术上可以解答你的问题......如果你希望数字在连接过程中被当作数字处理,只需将它们包裹在括号中即可。

<?php
echo '11hello ' . (1 + 2) . '34';
?>

你必须在数学运算中使用()

echo 'hello ' . (1 + 2) . '34'; // output hello334
echo '11hello ' . (1 + 2) . '34'; // output 11hello334
链接地址: http://www.djcxy.com/p/58511.html

上一篇: php string number concatenation messed up

下一篇: Find greatest of three values in PHP