Php ';42';来自
考虑:Php ';42';来自,php,Php,考虑: php > echo '1 + 5' * '42 + 1' . "\n"; 42 我本以为会出现某种错误或警告,但PHP允许我们毫无怨言地对字符串进行乘法。但是,为什么显示第二个字符串中的第一个整数 还有一些例子,我找不到结果背后真正的逻辑原因: php > echo '1 hi' * '42 + 1' . "\n"; 42 php > echo 'hi' * '42 + 1' . "\n"; 0 php > echo '1 + 5' * '42 + hi' .
php > echo '1 + 5' * '42 + 1' . "\n";
42
我本以为会出现某种错误或警告,但PHP允许我们毫无怨言地对字符串进行乘法。但是,为什么显示第二个字符串中的第一个整数
还有一些例子,我找不到结果背后真正的逻辑原因:
php > echo '1 hi' * '42 + 1' . "\n";
42
php > echo 'hi' * '42 + 1' . "\n";
0
php > echo '1 + 5' * '42 + hi' . "\n";
42
php > echo '1 + 5' * '42 hi' . "\n";
42
php > echo '1 + 5' * '42hi' . "\n";
42
PHP尝试动态地将字符串转换为数字,并根据得到的数据进行计算。当一个字符串以一个非数字开头时,它会被转换成一个零-这就是你的答案 当PHP转换这些时,将以从左到右的方式进行: 字符串
1+5
实际转换为数字1,然后42+1
转换为42。因此,您的语句是1*42,结果是42的回声。对于回答为零的语句,您尝试将hi
(转换为零)相乘,因此得到的结果为零
编辑:至于它为什么回显答案而不是字符串,这仅仅是由于运算符的优先级。数学运算符的排名高于字符串运算符,因此它将其视为它应该计算出来的东西,然后在它应该按原样计算出来的东西上进行回显。8?我不知道你说的是哪8个?这个问题似乎离题了,因为它是关于阅读FMU谢谢。我没有意识到字符串被转换为int,然后产品被重新转换为string。说到这里,答案就显而易见了。没问题,PHP是一件有趣的事情。有时,你可以阅读手册几个小时,却找不到你想要的,有时,你只是在寻找正确答案的时候偶然发现了它——哦,当你认为你已经掌握了PHP的每一个技巧时,它又在欺骗你。