Соединение строк через оператор точки в PHP

Раздел: Язык PHP -> Синтаксис и операторы PHP

Основы конкатенации строк в PHP

Как соединить две строки в PHP?

Оператор точки (.) выполняет конкатенацию строк. Это базовый и самый распространенный способ объединения строковых значений. Синтаксис: $result = $str1 . $str2;.

$firstName = 'Иван';
$lastName = 'Петров';
$fullName = $firstName . ' ' . $lastName;
echo $fullName; // Иван Петров

точка в php в строке (точка (конкатенация) в строке php)

Оператор не изменяет исходные переменные, а создает новую строку. Если один из операндов не является строкой, PHP автоматически преобразует его (например, число в строку).

Типичная ошибка

Использование оператора + вместо . для строк: $a = '5' + '3'; // 8 (число). Для строковой конкатенации нужен именно точка.

Как присоединить строку к существующей переменной?

Сокращенный оператор присваивания с конкатенацией .= добавляет строку в конец существующей переменной.

$text = 'Привет';
$text .= ', мир!';
echo $text; // Привет, мир!

Php три точки (три точки в php (spread operator))

Проблема: не забыть инициализировать переменную

Если переменная не определена, оператор .= вызовет ошибку (до PHP 8.0 – предупреждение). Нужно инициализировать её пустой строкой.

Как вставить переменную в середину строки без конкатенации?

Двойные кавычки интерполируют переменные: "Текст $variable текст". Это альтернатива конкатенации, которая не использует точку.

$age = 25;
echo "Ваш возраст: $age лет"; // Ваш возраст: 25 лет

Для сложных выражений нужен синтаксис фигурных скобок: "{$obj->property}".

Ошибка интерполяции при неоднозначности

Если после переменной идут символы, которые могут быть частью имени переменной, используйте фигурные скобки: "$variabletext" может быть интерпретировано как переменная $variabletext.

Как объединить массив строк в одну строку?

Функция implode() объединяет элементы массива с разделителем. Это удобно, когда нужно склеить много строк без многократного использования точки.

$words = ['PHP', 'JavaScript', 'Python'];
$result = implode(', ', $words);
echo $result; // PHP, JavaScript, Python

Если разделитель не нужен, передайте пустую строку: implode('', $words).

Как отформатировать строку с подстановками?

Функция sprintf() возвращает строку по шаблону с подстановками через плейсхолдеры. Это гибче, чем конкатенация, особенно для чисел с форматированием.

$name = 'Анна';
$score = 95.5;
$message = sprintf('Привет, %s! Ваш результат: %.1f баллов.', $name, $score);
echo $message; // Привет, Анна! Ваш результат: 95.5 баллов.

Плейсхолдеры: %s – строка, %d – целое, %f – число с плавающей точкой.

Как создать многострочную строку с включением переменных?

Синтаксис heredoc позволяет задать строку как многострочный блок с интерполяцией переменных, а nowdoc – без интерполяции. Это альтернатива конкатенации через точку для длинных текстов.

$name = 'Мир';
$heredoc = <<

Ошибка закрывающего идентификатора

Закрывающий идентификатор heredoc/nowdoc должен быть на отдельной строке без отступов и точки с запятой сразу после него. В PHP 7.3+ разрешены отступы, но для совместимости лучше придерживаться строгих правил.

Расширенные примеры конкатенации строк

Конкатенация с разными типами данных

Пример
$int = 42;
$float = 3.14;
$boolTrue = true;
$boolFalse = false;
$null = null;
$array = ['a', 'b'];

$result1 = $int . ' - число'; // 42 - число
$result2 = $float . ' - дробь'; // 3.14 - дробь
$result3 = $boolTrue . ' - истина'; // 1 - истина (true преобразуется в '1')
$result4 = $boolFalse . ' - ложь'; // '' - ложь (false преобразуется в '')
$result5 = $null . ' - пусто'; // '' - пусто (null преобразуется в '')
$result6 = $array . ' - массив'; // Notice: Array to string conversion -> 'Array - массив'

pre class="ex_r">42 - число
3.14 - дробь
1 - истина
 - ложь
 - пусто
Array - массив

Обратите внимание:

При конкатенации массива выдается предупреждение, а строковое представление - слово 'Array'. Лучше явно преобразовывать массив через implode() или json_encode().

Цепочка конкатенаций и производительность

Пример
$parts = ['a', 'b', 'c', 'd', 'e'];
$start = microtime(true);
$result = '';
foreach ($parts as $p) {
    $result .= $p;
}
$timeConcatenate = microtime(true) - $start;

$start2 = microtime(true);
$result2 = implode('', $parts);
$timeImplode = microtime(true) - $start2;

echo "Конкатенация: $timeConcatenate сек, implode: $timeImplode сек";
// Вывод: Конкатенация: 8.5e-6 сек, implode: 5.2e-6 сек (пример)

Для большого числа частей implode() обычно быстрее, так как избегает многократного выделения памяти.

Конкатенация в условных выражениях

Пример
$isAdmin = true;
$greeting = 'Добро пожаловать' . ($isAdmin ? ', администратор!' : ', пользователь!');
echo $greeting; // Добро пожаловать, администратор!

Точка имеет более высокий приоритет, чем тернарный оператор, поэтому скобки обязательны. Без скобок код 'Добро пожаловать' . $isAdmin ? ', администратор!' : ', пользователь!' интерпретируется как ('Добро пожаловать' . $isAdmin) ? ....

Конкатенация и интернационализация (локализация)

Пример
$lang = 'ru';
$greetingRu = 'Привет';
$greetingEn = 'Hello';

$name = 'Мария';
$fullGreeting = ($lang === 'ru' ? $greetingRu : $greetingEn) . ', ' . $name . '!';
echo $fullGreeting; // Привет, Мария!

В реальных проектах используют функции sprintf() или strtr() для перевода шаблонов.

Использование sprintf для сложного форматирования

Пример
$price = 1234.5678;
$discount = 15;
$formatted = sprintf('Цена: %.2f руб (скидка %d%%)', $price, $discount);
echo $formatted; // Цена: 1234.57 руб (скидка 15%)

%% выводит символ процента. Для округления - спецификатор %.2f.

Конкатенация с null-coalescing оператором

Пример
$username = ''; // или null
$greeting = 'Привет, ' . ($username ?? 'гость');
echo $greeting; // Привет, гость

Если переменная не определена, null-coalescing оператор предотвратит ошибку и подставит строку по умолчанию.

Точка (конкатенация) в строке PHP - comments

En
точка в php в строке (php)