PHP 7.1.12 Released

echo

(PHP 4, PHP 5, PHP 7)

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

Описание

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

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

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

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

I have <?=$foo?> foo.

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

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

arg1

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

...

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

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

Примеры

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

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

echo 
"Это займет
несколько строк. Переводы строки тоже
выводятся"
;

echo 
"Это займет\nнесколько строк. Переводы строки тоже\nвыводятся";

echo 
"Экранирование символов делается \"Так\".";

// с echo можно использовать переменные ...
$foo "foobar";
$bar "barbaz";

echo 
"foo - это $foo"// foo - это foobar

// ... и массивы
$baz = array("value" => "foo");

echo 
"это {$baz['value']} !"// это foo !

// При использовании одиночных кавычек выводится имя переменной, а не значение
echo 'foo - это $foo'// foo - это $foo

// Если вы не используете другие символы, можно вывести просто значения переменных
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

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

echo <<<END
Здесь используется синтаксис "here document" для вывода
нескольких строк с подстановкой переменных 
$variable.
Заметьте, что закрывающий идентификатор должен
располагаться в отдельной строке. никаких пробелов!
END;

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

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

Примечания

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

Подсказка

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

<?php
echo "Sum: "2;
echo 
"Hello ", isset($name) ? $name "John Doe""!";

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

<?php
echo 'Sum: ' . (2);
echo 
'Hello ' . (isset($name) ? $name 'John Doe') . '!';

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

add a note add a note

User Contributed Notes 3 notes

up
6
pemapmodder1970 at gmail dot com
7 months 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).
up
-3
Jamie Robinson
1 year ago
The {} syntax is useful for printing non array variables as well, an example to illustrate:

<?php
$foo
= "foobar";
$bar = "barbaz";

//Will produce the error: Undefined variable: $foo_
echo "$foo_$bar";

//Will print the intended string: "foobar_barbaz"
echo "{$foo}_$bar";
?>

Could even be worth getting into the habit of enclosing all variables in {} when writing echo strings, to be on the safe side.
up
-35
214363570 at qq dot com
8 months ago
Dear:
      Is there a offical function like echoln(), such as
  
     function echoln($s=""){
            echo $s."\n";
     }

     $str = "i love php";
     echoln($str);
     echoln($str);
     echoln($str);
     echoln($str);

     not is:
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";
     echo $str."\n";

     Thank you.

     Best regards.
To Top