这种行为在 PHP 中是否正确?
<?php echo '-' . 1 + 1 . ' crazy cats'; ?>
// Outputs:
0 crazy cats
我知道减号被连接到第一个'1'和'-1'转换为整数,而不是'2'到字符串。
请解释原因。
解决它的最佳方法是什么?这个?
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
这种行为在 PHP 中是否正确?
<?php echo '-' . 1 + 1 . ' crazy cats'; ?>
// Outputs:
0 crazy cats
我知道减号被连接到第一个'1'和'-1'转换为整数,而不是'2'到字符串。
请解释原因。
解决它的最佳方法是什么?这个?
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
首先,它是正确的,如果它不同,它也是正确的,这就是 PHP 开发人员定义操作数优先级的方式。
在这种情况下,没有操作数具有优先级,所以你从左到右阅读它
'-' . 1 ==> '-1'
'-1' + 1 ==> 0
(对字符串的算术运算,将尝试先将它们转换为数字,然后再进行算术运算)。0 . ' crazy cats' ==> "0 crazy cats"
(对数字的字符串操作,会将它们转换为字符串)。如果你想要-2个疯猫,你可以用括号设置操作优先级:
echo '-' . (1 + 1) . ' crazy cats';
echo
也遵循将echo 'foo', 'bar'
项目分成不同的陈述以呼应的构造。在这种情况下,您不必担心连接顺序。
所以你可以这样做<?php echo '-', (1 + 1), ' crazy cats'; ?>
,你的猫不会在乎底片!
你的措辞已关闭。'-'
不是被铸造而是被连接的。
PHP 仍将(string) 1
and-1
视为整数。
.
并且+/-
在 PHP 中具有相同的优先级,因此可以从左到右读取字符串。
上面类似于说:
echo '-1' + '1 crazy cats';
如果您愿意,这可以避免优先级:
printf('-%d crazy cats',1+1);