The 5th Annual China PHP Conference

echo

(PHP 4, PHP 5, PHP 7)

echoAffiche une chaîne de caractères

Description

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

Affiche tous les paramètres. Aucune nouvelle ligne n'est ajoutée.

echo n'est pas vraiment une fonction (c'est techniquement une structure du langage), cela fait que vous n'êtes pas obligé d'utiliser des parenthèses. echo (contrairement à d'autres structures de langage) ne se comporte pas comme une fonction, il ne peut donc pas être utilisé dans le contexte d'une fonction. De même, si vous voulez passer plusieurs paramètres à echo, les paramètres ne doivent pas être entourés de parenthèses.

echo dispose aussi d'une version courte, où vous pouvez faire suivre la balise PHP ouvrante d'un signe égal (=). Avant PHP 5.4.0, cette syntaxe n'était possible que si la directive de configuration short_open_tag était activée.

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

La seule différente avec print est que echo accepte une liste d'arguments.

Liste de paramètres

arg1

Le paramètre à afficher.

...

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec echo

<?php
echo "Bonjour le monde";

echo 
"Cet echo() se
répartit sur plusieurs lignes. Il affiche aussi les
nouvelles lignes"
;

echo 
"Cet echo() se\nrépartit sur plusieurs lignes. Il affiche aussi les\nnouvelles lignes";

echo 
"L'échappement de caractères se fait : \"comme ceci\".";

// Vous pouvez utiliser des variables avec echo()
$foo "foobar";
$bar "barbaz";

echo 
"foo vaut $foo"// foo vaut foobar

// Vous pouvez aussi utiliser des tableaux
$baz = array("value" => "foo");

echo 
"c'est {$baz['value']} !"// c'est foo !

// Les guillemets simples annulent le remplacement des variables
echo 'foo vaut $foo'// foo vaut $foo

// Si vous n'utilisez pas d'autres caractères,
// vous pouvez afficher plusieurs variables
// en les séparant par des virgules
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

// Les chaînes peuvent être passées individuellement comme arguments multiples ou
// concaténées et passées comme un seul argument
echo 'Cette ''chaîne ''a été ''faite ''avec plusieurs paramètres.'chr(10);
echo 
'Cette ' 'chaîne ' 'a été ' 'faite ' 'à l\'aide de la concaténation.' "\n";

echo <<<END
Cette syntaxe s'intitule le "here document" et
permet d'afficher plusieurs lignes avec de
l'interpolation de variables. Notez que la fin de
la syntaxe doit apparaître sur une nouvelle ligne,
avec uniquement un point-virgule, et pas d'espace
de plus !
END;

// parce que echo() ne se comporte pas comme une fonction, le code suivant n'est pas valide.
($some_var) ? echo 'true' : echo 'false';

// Cependant, les lignes suivantes sont valides :
($some_var) ? print 'Oui' : print 'Non'// print est aussi une structure de langage, mais
                                   // il se comporte comme une fonction, donc,
                                   // il peut être utilisé dans ce contexte.
echo $some_var 'Oui''Non';
?>

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.

Astuce

Un bénéfice de passe par plusieurs arguments au lieu d'utiliser la concaténation dans la fonction echo concerne la priorité de l'opérateur point ".". Si plusieurs arguments sont passés, alors les parenthèses ne sont pas requises pour accroitre la priorité. :

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

Avec la concaténation, l'opérateur "point" a une priorité plus élevée que l'addition et l'opérateur ternaire, et donc, les parenthèses doivent être utilisées pour un comportement correct :

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

Voir aussi

add a note add a note

User Contributed Notes 3 notes

up
4
pemapmodder1970 at gmail dot com
2 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
5
Jamie Robinson
9 months 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
-12
214363570 at qq dot com
2 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