Formatting echo in php

php вывод текста и переменной | Особенности

Решил я написать эту статью, чтобы расставить точки как правильно и когда выводить данные. Статья не простая, поэтому если Вы ещё никогда не выводили текст ранее, то лучше начните с первого урока курса по PHP, а уже как опыта наберётесь, тогда заглядывайте сюда.

Чтобы вывести на экран текст мы используем одну из следующих конструкций языка: echo или print, либо функцию printf. Давайте разберём варианты и их особенности:

Функция printf позволяет нам вывести на экран отформатированный текст:

printf("%%b = '%b'", 322); // Вывести значение в двоичном представлении

printf используется очень редко, самое популярное применение: преобразовать цену товара в классический вид: рубли.копейки. К примеру:

Если printf используют для вывода очень редко, то вот языковые конструкции print и echo — в каждом коде! Я говорю, что printf функция и значение надо писать в скобках по примеру выше, а вот echo и print — языковые конструкции и текст писать в скобках не надо:

Разница между echo и print есть, хоть смысл у них один и тот же. print может указывать лишь 1 значение, а вот в echo можно перечислять их через запятую:

Не смотря на это всё же можно вывести через один print 2 переменных и делается это с использованием конкатенации:

Конкатенация строк работает следующим образом, она СНАЧАЛА объединяет все в одну большую строку, а уже потом выводит один раз! С другой стороны мы не говорим по очереди «выведи то, выведи сё», мы говорим: у тебя выделено в памяти 1 байт под $x, и 1 байт под $y, объедини $x и $y в памяти и получи ещё одну временную строку в 2 байта (2 символа латинских), и потом выведи и очисти память. В итоге математики уже смогли посчитать. что при конкатенации будет занято уже 4 байта временно на данные, а при перечислении через запятую только 2.

Читайте также:  Выравнивание текста

На первый взгляд кажется, что запятая всё же круче в данном случае, но везде повсеместно используют точку. На самом деле ответ очень прост и его подтвердит любой эксперт — нет смысла заморачиваться и экономить на спичках, использование точки считается более классическим и делом привычки многих, и вы никогда в жизни не столкнётесь с тем, что сайт быстрее или медленнее работает из-за точки или запятой. Настоящая производительность сайтов кроется совсем в других вопросах (сложные операции, большой объем данных в Базе Данных)! Поэтому смело используйте то, что Вы уже ранее использовали, переучиваться нет смысла.

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

Hello
World
'; // много тегов можно уместить в одной строке для вывода, не стесняйтесь

Но есть одна маленькая особенность, когда нам необходимо будет использовать двойные кавычки для особой обработки строки (об этом чуть позже), тогда мы применим конкатенацию для строк:

"; // Вывести специальный символ UTF-8

Завершая тему print и echo хотелось бы уточнить ещё второе отличие. print возвращает цифру 1 всегда после завершения выполнения, echo — нет. И вот на этом часто любят строить задачки такого плана для того, чтобы пошевелить мозгами:

И тут Вы спросите, используется ли такое где-то? Ответ — НЕТ, это считается маразмом, и была бы моя воля, я print сделал бы лишь синонимом echo. Не смотря на то, что подобное никто никогда не использует, эта возможность до сих пор остаётся как развлечение для теоретиков.

Какие кавычки правильно использовать для вывода текста в PHP

Я не буду грузить Вам голову маразмом, итак одну вещь рассказал выше. Поэтому давайте сразу перейдем к тому, как правильно делать вывод!

Правило №1 — без кавычек мы пишем числа и переменные:

Правило №2: Одинарные кавычки используем когда хотим вывести в неизменном виде то, что содержится внутри кавычек, а это мы хотим сделать всегда:

Заметьте, что теги отправляются в браузер в неизменном виде, а браузер, в свою очередь, обрабатывает их и выводит как теги, то есть уже отформатированный код. Снова же мы повторяем, что PHP — генерирует HTML, а не текст.

Исключения из правил, когда мы хотим вывести спецсимволы такие как знак больше или меньше, или целый блок HTML, то мы применяем функцию htmlspecialchars:

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

Данный код считается ужасным, банально потому что мы не можем читать наш код и не понимаем его поведение:

Глядя на код выше выведется Friends или FrienBeer ? Это называется не очевидным поведением, а значит в будущем ещё не раз поведение этого кода может быть изменено. Никогда не пишите код так, чтобы нельзя было его сразу быстрым взглядом понять. Правильно было бы:

Но не смотря на это мы двойные кавычки используем в двух случаях, когда нам надо вывести перевод строки (не HTML) либо спецсимвол:

"; // Вывести специальный символ UTF-8

В исходном коде страницы Вы можете увидеть как работает перевод строки \r\n и понять разницу.

Встраиваем вывод из PHP в HTML

PHP — лишь инструмент, способ вставить в HTML какую-то сгенерированную часть данных, поэтому мы используем PHP внутри HTML всегда. Простой вариант:

Указанный выше синтаксис многогранен, внутри конструкции PHP мы можем не только использовать echo, но и любые другие операции включая создание переменных и т.д. и т.п. Но если необходимо ТОЛЬКО вывести переменную или текст одним действием (только одним echo), можно применить сокращенный синтаксис:

Самое интересное, это использовать совмещенный синтаксис для PHP и HTML:

Как вы видите, внутри итерации цикла можно выводить чистый HTML, достаточно закрыть конструкцию PHP и продолжить выводить HTML. Этот способ намного предпочтительнее обычного echo тем, что наш редактор кода IDE PHPStorm подсветит синтаксис кода и упростит разработку сайта.

Статья будет дорабатываться и совершенствоваться. Но даже сейчас я в ней обозначил все основные приёмы вывода текста и переменных в PHP

Комментарии о School-PHP (2):

У Стаса, всегда нужная информация. Бывает пишешь что-нибудь, думаешь — надо загуглить. потом думаешь — ну нафиг! и идёшь к Стасу на сайт.
И не нужно гуглить. Тут всегда всё свежее и главное — без «воды», всё по теме.

Персональный блог Ускова Станислава: School-PHP.com

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

Школа программирования © 2012-2023
imbalance_hero | inpost@list.ru , admin@school-php.com
account on phpforum | youtube channel

Источник

echo

Выводит одно или несколько выражений без дополнительных символов новой строки или пробелов.

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

echo имеет также краткую форму, представляющую собой знак равенства, следующий непосредственно за открывающим тегом. Этот сокращённый синтаксис работает даже с отключённым параметром конфигурации short_open_tag.

Единственное отличие от print в том, что echo принимает несколько аргументов и не имеет возвращаемого значения.

Список параметров

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

Возвращаемые значения

Функция не возвращает значения после выполнения.

Примеры

Пример #1 Примеры использования echo

echo «echo не требует скобок.» ;

// Строки можно передавать по отдельности как несколько аргументов или
// объединять вместе и передавать как один аргумент.
echo ‘Эта ‘ , ‘строка ‘ , ‘сформирована ‘ , ‘из ‘ , ‘нескольких параметров.’ , «\n» ;
echo ‘Эта ‘ . ‘строка ‘ . ‘сформирована ‘ . ‘с ‘ . ‘помощью конкатенации.’ . «\n» ;

// Новая строка или пробел не добавляются; пример ниже выведет «приветмир» в одну строку
echo «привет» ;
echo «мир» ;

// То же, что и выше
echo «привет» , «мир» ;

echo «Эта строка занимает
несколько строк. Новые строки также
будут выведены» ;

echo «Эта строка занимает\nнесколько строк. Новые строки также\nбудут выведены.» ;

// Аргументом может быть любое выражение, производящее строку
$foo = «пример» ;
echo «пример — это $foo » ; // пример — это пример

$fruits = [ «лимон» , «апельсин» , «банан» ];
echo implode ( » и » , $fruits ); // лимон и апельсин и банан

// Нестроковые выражения приводятся к строковым, даже если используется declare(strict_types=1)
echo 6 * 7 ; // 42

// Поскольку echo не работает как выражение, следующий код некорректен.
( $some_var ) ? echo ‘true’ : echo ‘false’ ;

// Однако следующие примеры будут работать:
( $some_var ) ? print ‘true’ : print ‘false’ ; // print также является конструкцией, но
// это допустимое выражение, возвращающее 1,
// поэтому его можно использовать в этом контексте..

echo $some_var ? ‘true’ : ‘false’ ; // сначала выполняется выражение, результат которого передаётся в echo
?>

Примечания

Замечание: Поскольку это языковая конструкция, а не функция, она не может вызываться при помощи переменных функций или именованных аргументов.

Замечание: Использование с круглыми скобками

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

echo( «привет» );
// также выведет «привет», потому что («привет») является корректным выражением

echo( 1 + 2 ) * 3 ;
// выведет «9»; круглые скобки приводят к тому, что сначала вычисляется 1+2, а затем 3*3
// оператор echo видит всё выражение как один аргумент

echo «привет» , » мир» ;
// выведет «привет мир»

echo( «привет» ), ( » мир» );
// выведет «привет мир»; круглые скобки являются частью каждого выражения

echo( «привет» , » мир» );
// Выбросит ошибку синтаксического анализа, потому что («привет», «мир») не является корректным выражением.
?>

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

// Ниже выражение ‘Привет, ‘ . isset($name) вычисляется первым
// и всегда имеет значение true, поэтому аргумент для echo всегда равен $name
echo ‘Привет, ‘ . isset( $name ) ? $name : ‘Джон Доу’ . ‘!’ ;

// Предполагаемое поведение требует дополнительных скобок
echo ‘Привет, ‘ . (isset( $name ) ? $name : ‘Джон Доу’ ) . ‘!’ ;

// В PHP до 8.0.0 ниже выведется «2», а не «Сумма: 3».
echo ‘Сумма: ‘ . 1 + 2 ;

// Опять же, добавление круглых скобок обеспечивает предполагаемый порядок выполнения.
echo ‘Сумма: ‘ . ( 1 + 2 );

Если передано несколько аргументов, скобки не требуются для обеспечения приоритета, потому что каждое выражение является отдельным:

echo «Привет, » , isset( $name ) ? $name : «Джон Доу» , «!» ;

Смотрите также

  • print — Выводит строку
  • printf() — Выводит отформатированную строку
  • flush() — Сброс системного буфера вывода
  • Способы работы со строками

Источник

Оцените статью