Вы получаете неопределенную переменную, потому что объединяете ее значение с другим значением.
Эквивалент
$str = $str . "something";
Итак, он не может сказать, каково начальное значение. Это эквивалент этого:
$str = [undefined value] . "something";
Каков результат объединения [undefined value]
и "something"
? Переводчик не может сказать ...
Итак, сначала вы должны поместить ""
в переменную, чтобы инициировать значение переменной, как вы это сделали.
НТН