Jus*_*nHo 12 php string concatenation operator-precedence operator-keyword
我在这里得到了一些PHP代码:
<?php
echo 'hello ' . 1 + 2 . '34';
?>
Run Code Online (Sandbox Code Playgroud)
输出234,
但是当我在"你好"之前添加一个数字11时:
<?php
echo '11hello ' . 1 + 2 . '34';
?>
Run Code Online (Sandbox Code Playgroud)
它输出1334而不是245(我预期它),为什么呢?
Bli*_*itZ 15
真奇怪...
但
<?php
echo '11hello ' . (1 + 2) . '34';
?>
Run Code Online (Sandbox Code Playgroud)
要么
<?php
echo '11hello ', 1 + 2, '34';
?>
Run Code Online (Sandbox Code Playgroud)
解决问题.
UPDv1:
终于设法得到了正确的答案:
'hello' = 0(不包含前导数字,因此PHP假定它为零).
因此'hello' . 1 + 2简化为'hello1' + 2is 2,因为没有前导数字'hello1'也为零.
'11hello '= 11(包含前导数字,因此PHP假设它是11).
因此'11hello ' . 1 + 2简化了'11hello 1' + 2为11 + 2是13.
UPDv2:
http://www.php.net/manual/en/language.types.string.php
该值由字符串的初始部分给出.如果字符串以有效数字数据开头,则这将是使用的值.否则,该值将为0(零).有效数字数据是可选符号,后跟一个或多个数字(可选地包含小数点),后跟可选指数.指数是'e'或'E',后跟一个或多个数字.
您必须()在数学运算中使用:
echo 'hello ' . (1 + 2) . '34'; // output hello334
echo '11hello ' . (1 + 2) . '34'; // output 11hello334
Run Code Online (Sandbox Code Playgroud)
点运算符具有与+和 - 相同的优先级,这可能会产生意外结果.
这在技术上回答了你的问题...如果你想在连接期间将数字视为数字,只需将它们包括在括号中.
<?php
echo '11hello ' . (1 + 2) . '34';
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28711 次 |
| 最近记录: |