Типизация в PHP, как она работает?

Вопрос в том, что происходит с переменной $a и почему?

<?
$a 
"0";    // 0 string (в кавычках передаются строки)
$a += 2;    // 2 integer (PHP автоматически приводит к типу integer)
$a $a 1.5;    // 3.5 double (PHP автоматически приводит к типу double при)
$a "10 green apples";    // 15 integer (5+10) приводит к типу integer, отбрасывая все, что после числа.
$a "green apples 10";    // 20 integer (5+0) если первым не число в строке, то будет равно 0
$a .= "--";    // 15-- string (при конкатенации строк приводит к типу string)

/*
Чтобы точно определить, что он выведет использовали функцию gettype($a)
echo $a.' '.gettype($a).'<br />';
*/
?>