Consider the following line of code:
The output of that is 3, which is the expec
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
.