Немного странный термин, который вы услышите в 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. Удачи!