Операции конкатенации строк в PHP
.
, интерполяция строк, короткое присваивание, implode()
и str_replace()
В PHP конкатенация строк — распространённая операция, используемая для объединения нескольких строк в одну. В PHP не менее четырёх способов объединения нескольких строк в одну. У каждого из них своё применение, адаптированное к каждому контексту, и знать их — хороший навык кодинга. В этой статье мы рассмотрим способы объединения строк в PHP, включая оператор конкатенации .
, короткий оператор присваивания .=
, интерполяцию строк и функцию implode()
.
Оператор конкатенации строк .
Оператор конкатенации строк или точка .
— простой способом объединения строк в PHP. Оператор конкатенации объединяет две строки, создавая новую строку, содержащую объединённый текст. Оператор .
может быть использован для объединения нескольких значений.
<?php
$string1 = "Hello";
$string2 = "world";
$string = $string1 . " " . $string2;
// Hello world
?>
Краткий оператор присваивания .=
Короткий оператор присваивания .=
— частный случай оператора конкатенации строк, добавляет правый операнд к левому.
<?php
$string = "Hello";
$moreString = " world";
$existingString .= $moreString;
// Hello world
?>
Обратите внимание, что правый операнд также может быть конкатенацией: в этом случае к переменной добавляется результат конкатенации справа.
Нет оператора для добавления строк в начало левого операнда. Обходной путь — использовать оператор конкатенации и повторить переменную.
<?php
$moreString = "Hello";
$string = " world";
$string = $moreString . $string;
// Hello world
?>
Интерполяция строк
Интерполяция строк даёт возможность встраивать переменные непосредственно в строки с двойными кавычками "..."
. Эта функция упрощает конкатенацию строк, автоматически анализируя переменные внутри строки. Это относится к переменным, свойствам и массивам (правда, только до одного уровня).
<?php
$moreString = "Hello";
$string = "$moreString world";
// Hello world
?>
Интерполяция строк помогает уменьшить количество использования оператора конкатенации строк, смешивая переменные и литеральные строки. Некоторые структуры быстро становятся трудночитаемыми.
Функция implode()
Функция implode() используется в для объединения элементов массива в одну строку путём конкатенации. В первый аргумент функции разделитель, представляющий собой строку, автоматически добавляемую между элементами. Используйте пустую строку, если требуется конкатенация: в противном случае используйте разделитель.
<?php
$words = array("Hello", "world");
$string = implode(" ", $words);
// Hello world
?>
implode()
полезна, когда в массиве собирается произвольное количество строк, которые впоследствии нужно превращены в строку. Вместо того чтобы выполнять столько конкатенаций строк, сколько элементов в массиве (минус один), implode выполняет операцию за один приём, что экономит память и время выполнения.
Использование str_replace() для простой системы шаблонов
Ещё один подход к конкатенации строк — создание системы шаблонов с помощью str_replace(). В такой системе строка шаблона строится с заполнителями, впоследствии заменяемыми динамическим значением. Для этого подходит функция str_replace(). str_replace() способна выполнять замену нескольких вхождений одновременно, делая эту операцию эффективной.
<?php
$template = "<hello>, <name>!";
$placeholders = ['<hello>', '<name>'];
$english = ['hello', 'world'];
$french = ['bonjour', 'le monde'];
$message_en = str_replace($placeholders, $english, $template);
// hello world
$message_fr = str_replace($placeholders, $french, $template);
// bonjour le monde
?>
В PHP существует ещё функции, которые можно использовать в для замены: preg_replace() — для замены на основе regex; preg_replace_callback() — для замены со сложными вычислениями; strtr() — для замены одного символа.
С годами этот подход усовершенствовался и превратился в полноценные шаблонизаторы, такие, как Twig, blade, plates и другие. Гораздо сложнее, но и требуют больше ресурсов. Иногда требуется обычная конкатенация строк.
Заключение
PHP предлагает различные методы конкатенации строк, у каждого из которых особенности использования. Оператор конкатенации и интерполяция строк — это подходы из документации PHP; implode() и .=
зависят от контекста, а str_replace() — последний шагом перед переходом к полноценной системе шаблонов. Экспериментируйте с этими методами, чтобы найти те, которые лучше подходят к вашему стилю кодирования и требованиям проекта. Счастливого кодирования!