Строковые операторы в PHP. Как правильно выполняется конкатенация строк?

строковые операторы в php. как правильно выполняется конкатенация строк?

Два типа строковых операторов

Если не углубляться в процессы, происходящие внутри PHP интерпретатора, то принцип работы строковых операторов очень прост. Их всего два, а выполняют они одно и то же — конкатенацию (объединение).

Возможности работы со строками не ограничены ими. В PHP существует множество встроенных функций. Таких как strlen(), с помощью которой можно узнать количество символов в строке, или str_replace(), которая заменяет в строке одни участки на другие.

Заметка
Операторы конкатенации строк выполняют простые задачи, но во второй части статьи мы приводим пару интересных примеров, которые  помогут сделать ваш код намного быстрее.

Обычный оператор конкатенации записывается как символ точки «.». Выражение с его участием можно сформировать в виде «$первая_строка . $вторая_строка;».

Принцип работы обычного оператора конкатенации:

  1. Взять аргумент, стоящий справа. Если он не является строкой, то преобразовать к строке.
  2. Взять аргумент, стоящий слева и совершить с ним аналогичные преобразования.
  3. После обработки аргументов, правая строка добавляется в конец левой – происходит объединение строк.
  4. Выражение заменяется результатом выполнения (объединенной строкой).
//пример обычного оператора конкатенации строк
$firstString = 'Я очень люблю';
$secondString = ' своего отца';

echo $firstString . $secondString; //Результат: Я очень люблю своего отца

Сокращенный оператор конкатенации записывается как набор символов «.=». Выражение с его участием можно сформировать в виде «$первая_строка .= $вторая_строка;».

Принцип работы сокращенного оператора конкатенации:

  1. Взять аргумент, стоящий справа. Если он не является строкой, то преобразовать к строке.
  2. Взять аргумент, стоящий слева и совершить с ним аналогичные преобразования.
  3. После обработки аргументов, правая строка добавляется в конец левой, то есть происходит объединение строк.
  4. Значение переменной, стоящей по левую сторону от оператора, заменяется на объединенную строку.

Сокращенный оператор объединения строк, по-другому можно записать как «$первая_строка = $первая_строка . $вторая_строка».

//пример сокращенного оператора конкатенации строк
$firstString = 'пойду гулять';
$secondString = 'Завтра я ';

$secondString .= $firstString;
echo $secondString; //Результат: Завтра я пойду глуять

Ускорение конкатенации строк

Скрипты, написанные на языке программирования PHP, выполняются очень быстро. Особенно, если их обрабатывает интерпретатор версии 7.0 и выше. В большинстве случаев, при выполнении ежедневных задач, вам не потребуется задумываться о производительности программы. Использовать все, что мы изложили ниже необходимо только при объединении большого числа строк в одном выражении, происходящее очень много раз (возможно в цикле).

Ранее при изучении строкового типа данных мы узнали, что инициализация через двойные кавычки позволяет подставлять в строку значения переменных, и делать это более явным образом с использованием фигурных скобок. Если вы не знаете, о чем идет речь, то прочитайте статью о строковом типе данных.

//пример подстановки переменной при инициализации строки
$fruit = 'Апельсин';
echo "Мой любимый фрукт: {$fruit}";


//пример с тем же результатом но с использованием конкатенации
$fruit = 'Манго';
echo "Я очень люблю: " . $fruit;

Мы можем использовать это поведение для того, чтобы заменить стандартный оператор конкатенации строк. Ниже мы приводим два примера. Первый с использованием обычной конкатенации, а второй с помощью инициализации строки и подстановкой в неё переменных. Результат один и тот же, но когда используется подстановка переменных, код выполняется на 20% быстрее.

//Задаем ряд строковых переменных, которые будут
//участвовать в операции их объединения в одну
$stringOne = 'Первая строка';
$stringTwo = 'Вторая строка';
$stringThree = 'Третья строка';
$stringFour = 'Четвертая строка';

//МЕДЛЕННО - объединение с помощью конкатенации переменных
$slow = $stringOne . $stringTwo . $stringThree . $stringFour;

//БЫСТРО - объединение с помощью подстановки переменных
$fast = "{$stringOne}{$stringTwo}{$stringThree}{$stringFour}";

Последние публикации