Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ';42';来自_Php - Fatal编程技术网

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的每一个技巧时,它又在欺骗你。