echo

(PHP 4, PHP 5, PHP 7)

echoВыводит одну или более строк

Описание

echo ( string $arg1 [, string $... ] ) : void

Выводит все аргументы. Символ конца строки не добавляется.

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

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

У меня есть <?=$foo?> foo.

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

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

arg1

Параметр для вывода.

...

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

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

Примеры

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

<?php
echo "Привет мир!";

// Вместо конкатенации можно предать список аргументов, которые будут объединены
// в одну строку и обработаны как один аргумент
echo 'Эта ''строка ''была ''создана ''несколькими параметрами.'chr(10);
echo 
'Эта ' 'строка ' 'была ' 'создана ' 'с помощью конкатенации.' "\n";

// Следующая строка неверна, так как echo не является функцией
($some_var) ? echo 'true' : echo 'false';

// Но это можно записать по-другому
($some_var) ? print 'true' : print 'false'// print также является конструкцией языка,
                                            // но ведет себя как функция, поэтому она
                                            // может быть использована в этом контексте.

echo $some_var 'true''false'// echo вынесен за пределы выражения
?>

Примечания

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

Подсказка

Преимущество передачи нескольких аргументов вместо конкатенации в echo касается приоритета оператора "точка". Если передавать несколько аргументов, то скобки в выражениях не нужны:

<?php
echo "Сумма: "2;
echo 
"Привет, ", isset($name) ? $name "незнакомец""!";

В случае конкатенации, оператор "точка" будет иметь более высокий приоритет, чем сложение или тернарный оператор, поэтому необходимо использовать скобки:

<?php
echo 'Сумма: ' . (2);
echo 
'Привет, ' . (isset($name) ? $name 'незнакомец') . '!';

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

add a note add a note

User Contributed Notes 1 note

up
27
pemapmodder1970 at gmail dot com
2 years ago
Passing multiple parameters to echo using commas (',')is not exactly identical to using the concatenation operator ('.'). There are two notable differences.

First, concatenation operators have much higher precedence. Referring to http://php.net/operators.precedence, there are many operators with lower precedence than concatenation, so it is a good idea to use the multi-argument form instead of passing concatenated strings.

<?php
echo "The sum is " . 1 | 2; // output: "2". Parentheses needed.
echo "The sum is ", 1 | 2; // output: "The sum is 3". Fine.
?>

Second, a slightly confusing phenomenon is that unlike passing arguments to functions, the values are evaluated one by one.

<?php
function f($arg){
 
var_dump($arg);
  return
$arg;
}
echo
"Foo" . f("bar") . "Foo";
echo
"\n\n";
echo
"Foo", f("bar"), "Foo";
?>

The output would be:
string(3) "bar"FoobarFoo

Foostring(3) "bar"
barFoo

It would become a confusing bug for a script that uses blocking functions like sleep() as parameters:

<?php
while(true){
  echo
"Loop start!\n", sleep(1);
}
?>

vs

<?php
while(true){
  echo
"Loop started!\n" . sleep(1);
}
?>

With ',' the cursor stops at the beginning every newline, while with '.' the cursor stops after the 0 in the beginning every line (because sleep() returns 0).
To Top