Для единичных операций оператор . достаточен. Для конкатенации в цикле:
// Плохо: O(n^2) из-за создания новых строк
$result = '';
foreach ($items as $item) {
$result .= $item; // каждый раз копирование
}
// Лучше: собрать в массив, затем implode
$parts = [];
foreach ($items as $item) {
$parts[] = $item;
}
$result = implode('', $parts);implode() эффективнее для больших объемов: рассчитывает итоговый размер, выделяет память один раз.