echo

(PHP 4, PHP 5, PHP 7, PHP 8)

echoAffiche une chaîne de caractères

Description

echo ( string ...$expressions ) : void

Affiche une ou plusieurs expressions, sans espaces ou nouvelle ligne additionnelle.

echo n'est pas une fonction mais une construction du langage. Ses arguments sont une liste d'expressions suivant le mot clé echo, séparé par des virgules, et non délimité par des parenthèses. Contrairement à d'autres construction du langages, echo n'a pas de valeur de retour, elle ne peut donc pas être utilisé dans le contexte d'une expression.

echo dispose aussi d'une syntaxe courte, où vous pouvez faire suivre immédiatement la balise PHP ouvrante d'un signe égal (=). Cette syntaxe est disponible même si la directive de configuration short_open_tag est désactivée.

J'ai <?=$foo?> foo.

La plus grosse différente avec print est que echo accepte plusieurs arguments et ne retourne aucune valeur.

Liste de paramètres

expressions

Une ou plusieurs expressions de chaînes de caractères à afficher, séparé par des virgules. Les valeurs qui ne sont pas des chaînes de caractères seront convertie en chaîne de caractère, même si la directive strict_types est activée.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec echo

<?php
echo "echo ne requit pas de parenthèses.";

// Les chaînes peuvent être passé soit individuellement comme plusieurs arguments ou
// concaténé ensemble et passé en tant qu'un seul argument
echo 'This ''string ''was ''made ''with multiple parameters.'"\n";
echo 
'This ' 'string ' 'was ' 'made ' 'with concatenation.' "\n";

// Aucune nouvelle ligne ou espace est ajouté ; ci-dessous affiche "helloworld" tout sur une ligne
echo "hello";
echo 
"world";

// Pareil que ci-dessus
echo "hello""world";

echo 
"This string spans
multiple lines. The newlines will be
output as well"
;

echo 
"This string spans\nmultiple lines. The newlines will be\noutput as well.";

// L'argument peut être n'importe quelle expression qui produit une chaîne de caractères
$foo "example";
echo 
"foo is $foo"// foo is example

$fruits = ["lemon""orange""banana"];
echo 
implode(" and "$fruits); // lemon and orange and banana

// Les expressions qui ne sont pas des chaînes sont convertie en chaîne, même si declare(strict_types=1) est utilisé
echo 7// 42

// Comme echo ne se comporte pas comme une expression, le code suivant est invalide.
($some_var) ? echo 'true' : echo 'false';

// Cependent, les exemples suivants fonctionneront :
($some_var) ? print 'true' : print 'false'// print est aussi une construction, mais
                                            // est une expression valide, retournant 1.
                                            // Dont il peut être utilisé dans ce contexte.

echo $some_var 'true''false'// évaluant l'expression d'abord puis la passant à echo
?>

Notes

Note: Comme ceci est une structure du langage, et non pas une fonction, il n'est pas possible de l'appeler avec les fonctions variables.

Note: Utilisation avec les parenthèses

Entourer un seul argument de echo avec des parenthèses ne lèvera pas une erreur de syntaxe, et produit une syntaxe ressemblant à un appel normal de fonction. Néanmoins, ceci peut être trompeur, car les parenthèses font en réalité partie de l'expression qui est en cours d'affichage, et non partie de la syntaxe de echo en lui-même.

<?php
echo "hello";
// outputs "hello"

echo("hello");
// also outputs "hello", because ("hello") is a valid expression

echo(2) * 3;
// outputs "9"; the parentheses cause 1+2 to be evaluated first, then 3*3
// the echo statement sees the whole expression as one argument

echo "hello"" world";
// outputs "hello world"

echo("hello"), (" world");
// outputs "hello world"; the parentheses are part of each expression

echo("hello"" world");
// Throws a Parse Error because ("hello", " world") is not a valid expression
?>

Astuce

Passer plusieurs arguments à echo permet d'éviter des complications qui apparaissent à cause de la précédence de l'opération de concaténation en PHP. Pour instance, l'opérateur de concatenation à une précédence supérieur à l'opérateur ternaire, et antérieur à PHP 8.0.0, avait la même précédence que l'addition et la soustraction :

<?php
// Below, the expression 'Hello ' . isset($name) is evaluated first,
// and is always true, so the argument to echo is always $name
echo 'Hello ' . isset($name) ? $name 'John Doe' '!';

// The intended behaviour requires additional parentheses
echo 'Hello ' . (isset($name) ? $name 'John Doe') . '!';

// In PHP prior to 8.0.0, the below outputs "2", rather than "Sum: 3"
echo 'Sum: ' 2;

// Again, adding parentheses ensures the intended order of evaluation
echo 'Sum: ' . (2);

Si plusieurs arguments sont fournis, alors les parenthèses ne seront pas requis pour enforcer la précédence, car chaque expression est séparé :

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

echo 
"Sum: "2;

Voir aussi

add a note add a note

User Contributed Notes 2 notes

up
28
pemapmodder1970 at gmail dot com
4 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).
up
-1
mparsa1372 at gmail dot com
2 months ago
The following example shows how to output text with the echo command (notice that the text can contain HTML markup):

<?php
echo "<h2>PHP is Fun!</h2>";
echo
"Hello world!<br>";
echo
"I'm about to learn PHP!<br>";
echo
"This ", "string ", "was ", "made ", "with multiple parameters.";
?>
To Top