Назад

Изучение PHP: эффективное объединение строк и переменных

Немного странный термин, который вы услышите в PHP: «объединение». Я до сих пор помню, как впервые услышал это слово, не имея ни малейшего представления о том, что оно значит. Оказалось, что это распространённая и полезная задача в PHP: объединить две строки в одну, чтобы получить одну строку или что-то, что можно вывести на экран.

Сегодня мы рассмотрим все основные аспекты конкатенации строк в PHP: как это делать, зачем это делать, что такое оператор конкатенации в PHP и немного о недостатках слишком частого использования конкатенации строк в PHP.

Понимание объединения строк в PHP: объединение двух строк

Мы используем “конкатенацию строк” для объединения последовательностей символов в PHP

Таким образом, мы создаём много HTML-кода на PHP. И даже когда мы этого не делаем, мы часто обрабатываем текст. По этим причинам мы часто хотим объединить два разных элемента string (под этим я подразумеваю конкретный тип данных — строку, в отличие от integer или других).

Таким образом, мы используем «конкатенацию строк» для объединения элементов в PHP. Мы можем использовать её, чтобы добавить число в строку или, что ещё чаще, объединить строку с другой строкой.

Оператор объединения PHP: .

Оператор объединения строк PHP — это точка. ..

Если вы программировали на другом языке, то, возможно, сталкивались с использованием символа + (плюс) для объединения двух (или более) строк. Например, так работает конкатенация строк в JavaScript. В PHP для конкатенации строк мы используем символ . (точка или запятая). Таким образом, если вы поставите точку, ., символ или две разные строки в кавычках, или переменную и строку, или переменную и переменную, результатом будет одна строка, которую PHP либо выведет (например, с помощью echo), либо обработает дальше.

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

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

Хорошо, пора переходить к конкретике. Вот пример кода, который показывает, как выглядит конкатенация в PHP на практике. Вот три разных способа, с помощью которых мы можем echo создать строку «Привет, мир!» в PHP:

echo "Hello World"; // outputs "Hello World"

$hello = 'Hello';
echo $hello.' World'; // outputs "Hello World"

$world = 'World';
$hello_world = $hello.' '.$world;
echo $hello_world; // outputs "Hello World"

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

Самая первая строка нашего примера кода — это просто пример очень простого использования echo в PHP для отображения строки. Вы будете делать это, когда захотите, чтобы текст из «мира PHP» отображался в HTML ваших страниц. Мы знаем, что последовательность "Hello World" является «строкой», потому что она заключена в двойные (или одинарные) кавычки.

В нашем следующем блоке сначала определяется одна строка, просто слово Hello, а затем к ней добавляется строка World перед тем, как вывести их на экран. В PHP добавление строки к строке — очень распространённая операция. Мы делаем это, чтобы определить часть последовательности в стороне от того места, где мы хотим её отобразить. (Часто намного дальше, чем в этом примере.)

Наконец, наш последний блок создаёт две новые переменные: слово World и фразу Hello World в виде одной строки. Таким образом, последний блок даёт нам пример PHP, который объединяет строки с помощью разделителя. В нашем случае разделителем является пробел. Я часто допускаю ошибку в PHP-коде, забывая о пробеле, но это легко исправить. Просто добавьте дополнительную строку с пробелом (или пробел к другой строке, если хотите).

Объединение ваших возможностей в PHP: добавляйте строки И переменные

В приведённом выше коде мы увидели наглядные примеры объединения строк в PHP. Но мы можем использовать PHP для объединения других типов переменных со строками в определённых пределах. Эти пределы: мы не можем объединять сложные типы данных, такие как объекты или массивы, со строками без дополнительной работы.

Но «более простые» типы данных PHP, такие как целые числа и числа с плавающей точкой (в общем, числа), очень часто объединяются в PHP. Это будет выглядеть примерно так:

$percentage = 12.1 + 9 + 41.21;
echo 'Your final score: '.$percentage.' out of 100%.'; // outputs "Your final score: 62.31 out of 100%."

$integer = 1 + 17;
echo $integer.' centimeters in length'; // outputs "18 centimeters in length"

В обоих примерах мы помещаем число (float в первом случае, integer во втором) непосредственно в строку с помощью конкатенации. Поскольку PHP преобразует число в строку, мы можем сделать это быстро и легко. В PHP добавление к строкам с помощью конкатенации легко выполняется для базовых типов с очевидными строковыми версиями.

Интерполяция строк PHP? Использовать одинарные или двойные кавычки?

То, что я редко использую, но что очень полезно знать, — это интерполяция строк в PHP. Под «интерполяцией строк» я подразумеваю (как и большинство людей, которые могут это сказать) встраивание $variable в строку в PHP, при котором $variable немедленно заменяется на своё значение. Это выглядит примерно так:

$number = 4;
echo "She has $number cars in her garage."; // outputs "She has 4 cars in her garage."
echo "She has {$number} cars in her garage."; // outputs "She has 4 cars in her garage."

Несколько важных моментов, связанных с вышесказанным. Во-первых, оба echo утверждения приведут к выводу «У неё в гараже 4 машины». Во-вторых, теперь мы знаем, что фигурные скобки {} не отображаются. В-третьих, важно, что в обоих утверждениях и строках выше используются двойные кавычки: " а не одинарные '. В PHP для строк необходимо использовать одинарные кавычки.

Кроме того, при использовании двойных кавычек вы можете разрешить PHP-движку вставлять в них переменные. Таким образом, мы могли бы добиться того же с помощью одинарных кавычек, если бы сделали следующее:

$number = 4;
echo 'She has '.$number.' cars in her garage.'; // outputs "She has 4 cars in her garage."

Здесь мы снова используем оператор конкатенации PHP, . а не строковую интерполяцию PHP. В обоих этих вариантах есть свои плюсы и минусы. И все три варианта работают нормально. Производительность при использовании строковой интерполяции для строк в двойных кавычках достаточно низкая, поэтому я не думаю, что вам стоит беспокоиться об этом. Но вы услышите, как люди указывают на (истинный) факт, что третий пример в этом разделе (очень незначительно) быстрее.

Странный случай: .= — это объединение присваиваемых значений в PHP

Наконец, вы увидите, что это иногда используется, и это очень важно для темы. Вы можете использовать сочетание . и = как для присваивания, так и для конкатенации. Чтобы лучше понять это, давайте вернёмся к предыдущим примерам:

$hello = 'Hello';
$world = 'World';
$hello_world = $hello.' '.$world;
echo $hello_world; // outputs "Hello World"

Я ничего не изменил в приведённом выше коде. Но вы можете написать PHP-код для объединения двух строк совсем другим способом. Это будет выглядеть так:

$output = 'Hello';
$output .= ' ';
$output .= 'World';
echo $output; // outputs "Hello World"

Итак, что это делает, так это объединяет до конца нашей $output строки пробел (), а затем слово World. В результате мы получаем точно такой же результат. Так эффективно каждый раз, когда вы видите, что .= это то же самое, что $output = $output.$new_thing; или похожее. Нравится вам или не нравится этот пример — дело личного вкуса. Но по мере того, как вы будете читать код других людей, я уверен, вы увидите, что люди время от времени используют это, поэтому полезно понимать этот аспект объединения PHP.

Теперь тщательно объединяйте свои строки

Прежде чем я закончу, небольшое предупреждение: умение объединять строки с помощью PHP важно и очень полезно. Но это также часто является признаком того, что вы делаете что-то менее эффективное, чем следовало бы. Шаблоны (файлы, которые содержат только HTML + уже упорядоченные переменные) часто являются лучшим решением для большинства задач, чем простое объединение множества строк с последовательностями HTML и переменными внутри, скажем, файла WordPress functions.php.

Тем не менее, конкатенация в PHP — это интересная и важная вещь, которой нужно овладеть. Хотя я считаю, что её следует использовать с осторожностью, я также скажу, что за те десять с лишним лет, что я пишу на PHP, не было ни одной недели, когда бы я не использовал возможности конкатенации строк в PHP. Удачи!