Ответ 1
Проще говоря, "+ =" является числовым оператором, а ". =" является строковым оператором. Рассмотрим этот пример:
$a = 'this is a ';
$a += 'test';
Это похоже на запись:
$a = 'this' + 'test';
Оператор "+" или "+ =" сначала преобразует значения в целые числа (и все строки оценивают до нуля при преобразовании в int), а затем добавляет их, поэтому вы получаете 0.
Если вы это сделаете:
$a = 10;
$a .= 5;
Это то же самое, что и запись:
$a = 10 . 5;
Так как "." оператор является строковым оператором, он сначала преобразует значения в строки; и с тех пор "." означает "concatenate", результатом является строка "105".