Arithmetic operation within string concatenation without parenthesis causes strange result

浪尽此生 提交于 2019-12-01 07:13:01

Your string '10 - 7 = ' is being concatenated with $x. Then that is being interpreted as an int which results in 10 and then 7 is subtracted, resulting in 3.

For more explanation, try this:

echo (int) ('10 - 7 = ' . 10); // Prints "10"

More information on string to number conversion can be found at http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion

If the string starts with valid numeric data, this will be the value used

In this code:

echo '10 - 7 = '.$x-$y;

The concatenation takes precedence, so what you're left with is this:

echo '10 - 7 = 10'-$y;

Because this is trying to perform integer subtraction with a string, the string is converted to an integer first, so you're left with something like this:

echo (int)'10 - 7 = 10'-$y;

The integer value of that string is 10, so the resulting arithmetic looks like this:

echo 10-$y;

Because $y is 7, and 10 - 7 = 3, the result being echoed is 3.

. and - have the same precedence, so PHP is reinterpreting '10 - 7 = 10' as a number, giving 10, and subtracting 7 gives 3.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!