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' + 2
为2
,因为'hello1'
前导数字也不为零。
'11hello '
= 11
(包含前导数字,所以PHP假设它是11)。
所以'11hello ' . 1 + 2
'11hello ' . 1 + 2
简化为'11hello 1' + 2
因为11 + 2
是13
。
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