这种行为在PHP中是否正确?PHP类型转换优先级
据我所知,减去被级联以铸造为整数的第一个“1”和“-1”,而不是“2”为字符串。
请解释原因。
解决问题的最佳方法是什么? 这一个?所有的
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
这种行为在PHP中是否正确?PHP类型转换优先级
据我所知,减去被级联以铸造为整数的第一个“1”和“-1”,而不是“2”为字符串。
请解释原因。
解决问题的最佳方法是什么? 这一个?所有的
<?php echo '-' . (string)1 + 1 . ' crazy cats'; ?>
如果你愿意的话,这样就避免了优先级:
printf('-%d crazy cats',1+1);
首先,它是正确的,如果它是不同的,也将是正确的,这是PHP开发人员如何定义的操作的优先级。
在这种情况下,没有操作的优先级,你还是你读它从左到右
'-' . 1 ==> '-1'
'-1' + 1 ==> 0
(对字符串的算术运算,会尽量给他们,然后再转换为数字做算术)。0 . ' crazy cats' ==> "0 crazy cats"
(对数字进行字符串操作,会将它们转换为字符串)。哎呀,你比我快:)顺便说一句,运算符优先级可访问:http:// php.net/manual/en/language.operators.precedence.php。 – 2012-07-19 01:55:34
您的言辞已关闭。 '-'
没有被铸造,但被连接。
PHP仍然会将(string) 1
和-1
视为一个整数。
.
和+/-
在PHP中具有相同的优先级,所以字符串可以从左到右读取。
以上是类似于说:
echo '-1' + '1 crazy cats';
当然没有铸造亏损,纠正了这个问题。 – Paker 2012-07-19 01:59:31
如果你想疯-2猫,你可以设置优先处理与括号:
echo '-' . (1 + 1) . ' crazy cats';
echo
也遵循echo 'foo', 'bar'
的结构,它将这些项目分成不同的语句来回显。在这种情况下,您不必担心连接顺序。
所以你可以做<?php echo '-', (1 + 1), ' crazy cats'; ?>
和你的猫不会在乎负面!
惊讶,这不是愚弄的人..所以+1 – Louis 2012-07-19 02:01:20