Let's check another piece of code:
<?php $a = "1"; /*w w w. j a v a 2 s. c o m*/ $b = 2; var_dump($a + $b); // 3 var_dump($a . $b); // 12 ?>
The + operator returns the sum of two numeric values.
The . operator concatenates two strings.
Thus, the preceding code assigns a string and an integer to two variables, and then tries to add and concatenate them.
When trying to add them using +, PHP needs two numeric values, and so it tries to adapt the string to an integer.
In this case, the string represents a valid number.
That is the reason why we see the first result as an integer 3 (1 + 2).
In the last line, we are performing a string concatenation.
We have an integer in $b, so PHP will first try to convert it to a string-which is "2" and then concatenate it with the other string, "1".
The result is the string "12".
PHP tries to convert the data type of a variable when needed.
PHP does not change the value and type of the variable itself.
It will take the value and try to transform it, leaving the variable intact.