Quelle est la différence entre echo, print et print r en PHP?

j'utilise echo et print_r beaucoup, et presque jamais utiliser print .

je me sens echo est une macro, et print_r est un alias de var_dump .

mais ce n'est pas la façon standard d'expliquer les différences.

175
php
demandé sur mikemaccana 2009-10-30 03:17:04

11 réponses

print et echo sont plus ou moins les mêmes; ils sont à la fois des éléments de langage que l'affichage des chaînes de caractères. Les différences sont subtiles: print a une valeur de retour de 1 de sorte qu'il peut être utilisé dans des expressions tandis que echo a un void type de retour; echo peut prendre plusieurs paramètres, bien que cette utilisation est rare; echo est légèrement plus rapide que print . (Personnellement, j'utilise toujours echo , jamais print .)

var_dump imprime un dump détaillé d'une variable, y compris son type et le type de tous les sous-éléments (si c'est un tableau ou un objet). print_r imprime une variable sous une forme plus lisible par l'humain: les chaînes ne sont pas citées, les informations de type sont omises, les tailles de tableaux ne sont pas données, etc.

var_dump est habituellement plus utile que print_r lors du débogage, d'après mon expérience. Il est particulièrement utile quand vous ne savez pas exactement ce que valeurs / types que vous avez dans vos variables. Considérez ce programme d'essai:

$values = array(0, 0.0, false, '');

var_dump($values);
print_r ($values);

avec print_r vous ne pouvez pas faire la différence entre 0 et 0.0 , ou false et '' :

array(4) {
  [0]=>
  int(0)
  [1]=>
  float(0)
  [2]=>
  bool(false)
  [3]=>
  string(0) ""
}

Array
(
    [0] => 0
    [1] => 0
    [2] => 
    [3] => 
)
173
répondu John Kugelman 2013-05-14 20:42:56

echo

  • sorties une ou plusieurs chaînes séparées par des virgules
  • Pas de valeur de retour

    p.ex. echo "String 1", "String 2"

imprimer

  • produit une seule chaîne de caractères
  • retourne 1 , de sorte qu'il peut être utilisé dans un expression

    p.ex. print "Hello"

    ou, if ($expr && print "foo")

print_r ()

  • génère une représentation explicite de toute un valeur
  • accepte non seulement les chaînes mais d'autres types, y compris les tableaux et les objets, les formatant pour être lisible
  • utile lorsque débogage
  • peut retourner sa sortie comme valeur de retour (au lieu de faire écho) si le deuxième argument optionnel est donné

var_dump ()

  • sorties représentation lisible par l'homme de une ou plusieurs valeurs séparées par des virgules
  • accepte non seulement les chaînes mais d'autres types, y compris les tableaux et les objets, les formatant pour être lisible
  • utilise un format de sortie différent de print_r() , par exemple il imprime également le type de valeurs
  • utile lors du débogage
  • Pas de valeur de retour

var_export ()

  • produit une lisible par l'homme et un exécutable par PHP "représentation de n'importe quelle valeur
  • accepte non seulement les chaînes mais d'autres types, y compris les tableaux et les objets, les formatant pour être lisible
  • utilise un format de sortie différent de print_r() et var_dump() - la sortie résultante est du code PHP valide!
  • utile lors du débogage
  • peut retourner sa sortie comme valeur de retour (au lieu de faire écho) si le deuxième argument optionnel est donné

Notes:

  • même si print peut être utilisé dans une expression, je recommande aux gens d'éviter de le faire, parce que c'est mauvais pour la lisibilité du code (et parce que c'est peu probable d'être jamais utile). Les règles de priorité lorsqu'elles interagissent avec d'autres opérateurs peuvent aussi être déroutantes. Pour cette raison, personnellement, je n'ai jamais une raison de l'utiliser plus de echo .
  • alors que echo et print sont des langues les constructions print_r() et var_dump() / var_export() sont des fonctions régulières. Vous n'avez pas besoin de parenthèses pour joindre les arguments à echo ou print (et si vous les utilisez, ils seront traités comme ils le seraient dans une expression).
  • tandis que var_export() retourne le code PHP valide permettant aux valeurs d'être relues plus tard, en se basant sur ce code de production, il peut être plus facile d'introduire des vulnérabilités de sécurité en raison de la nécessité d'utiliser eval() . Il serait il est préférable d'utiliser un format comme JSON pour stocker et relire les valeurs. La vitesse sera comparable.
92
répondu thomasrutter 2016-10-24 23:24:40

juste pour ajouter à John's answer , echo devrait être le seul que vous utilisez pour imprimer le contenu de la page.

print est légèrement plus lent. var_dump() et print_r() ne doivent être utilisés que pour déboguer.

vaut également la peine de mentionner est que print_r() et var_dump() fera écho par défaut, ajouter un deuxième argument à print_r() au moins qui évalue à true pour obtenir de retourner à la place, par exemple print_r($array, TRUE) .

La différence entre l'écho et le retour sont:

  • echo: affiche immédiatement la valeur à la sortie.
  • returning: renvoie la sortie de la fonction sous forme de chaîne. Utile pour la journalisation, etc.
15
répondu alex 2017-05-23 12:10:48
echo

N'ayant pas le type de retour

print

Ont le type de retour

print_r()

sorties telles que formatées,

4
répondu user1899888 2012-12-13 06:08:39

Echo :

C'est la déclaration qui n'est pas une fonction Pas de valeur de retour

Pas Nécessaire les parenthèses

Ne Pas Imprimer Array

Imprimer

Il est vrai fonction

type de Retour de 1

Required the Parentheseses

Ne Pas Imprimer Array

Print_r

imprimer en format lisible par l'homme

Chaîne Non entre guillemets

information Non détaillée de type Variable et tout

var_dump

toutes les informations de dump de variable type d'élément et sous-élément similaire

3
répondu UnderGround 2013-08-22 10:30:22

echo: echo est une construction de langue où il n'est pas nécessaire d'utiliser des parenthèses avec elle et il peut prendre n'importe quel nombre de paramètres et retourner vide.

   void echo (param1,param2,param3.....);

   Example: echo "test1","test2,test3";

print : c'est une construction de langue où il n'est pas nécessaire d'utiliser des parenthèses il suffit de prendre un paramètre et de retourner

    1 always.

           int print(param1);

           print "test1";
           print "test1","test2"; // It will give syntax error

prinf: c'est une fonction qui prend au moins une chaîne et le style de format et renvoie la longueur de la chaîne de sortie.

    int printf($string,$s);

    $s= "Shailesh";
    $i= printf("Hello %s how are you?",$s);    
    echo $i;

    Output : Hello Shailesh how are you?
             27



   echo returns void so its execution is faster than print and printf
2
répondu Shailesh Thapa 2014-01-30 11:15:38

**Echocan accepter de multiples expressions tandis que l'impression ne peut pas. La fonction Print_r () PHP est utilisée pour retourner un tableau sous une forme lisible par l'humain. Il est simplement écrit comme

![Print_r ($your_array)][1]
1
répondu shaik afroz 2013-12-02 11:28:40

print_r() est utilisé pour imprimer le tableau dans un format lisible par l'homme.

1
répondu vaibhav kulkarni 2015-01-21 10:11:12

La différence entre echo , imprimer , print_r et var_dump est très simple.

echo

echo n'est en fait pas une fonction mais une construction de langage qui est utilisé pour imprimer la sortie. Il est légèrement plus rapide que l'impression.

echo "Hello World";    // this will print Hello World
echo "Hello ","World"; // Multiple arguments - this will print Hello World

$var_1=55;
echo "$var_1";               // this will print 55
echo "var_1=".$var_1;        // this will print var_1=55
echo 45+$var_1;              // this will print 100

$var_2="PHP";
echo "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with echo (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with echo (loop or index  value required)

vous pouvez aussi utiliser la déclaration echo avec ou sans parenthèses

echo ("Hello World");   // this will print Hello World

imprimer

tout comme echo construire imprimer est aussi une construction du langage et non une fonction réelle. Les différences entre les echo et imprimer est que imprimer n'accepte qu'un seul argument et imprimer retourne toujours 1. Alors que echo n'a pas de valeur de retour. Donc imprimer déclaration peut être utilisé dans des expressions.

print "Hello World";    // this will print Hello World
print "Hello ","World"; // Multiple arguments - NOT POSSIBLE with print
$var_1=55;
print "$var_1";               // this will print 55
print "var_1=".$var_1;        // this will print var_1=55
print 45+$var_1;              // this will print 100

$var_2="PHP";
print "$var_2";                   // this will print PHP

$var_3=array(99,98,97)           // Arrays are not possible with print (loop or index  value required)
$var_4=array("P"=>"3","J"=>"4"); // Arrays are not possible with print (loop or index  value required)

tout comme echo , imprimer peut être utilisé avec ou sans parenthèses.

print ("Hello World");   // this will print Hello World

print_r

la fonction print_r () est utilisée pour imprimer information lisible par l'homme sur une variable. Si l'argument est un tableau ,la fonction print_r () imprime ses clés et éléments (même pour les objets).

print_r ("Hello World");    // this will print Hello World

$var_1=55;
print_r ("$var_1");               // this will print 55
print_r ("var_1=".$var_1);        // this will print var_1=55
print_r (45+$var_1);              // this will print 100

$var_2="PHP";
print_r ("$var_2");                // this will print PHP

$var_3=array(99,98,97)             // this will print Array ( [0] => 1 [1] => 2 [2] => 3 ) 
$var_4=array("P"=>"3","J"=>"4");   // this will print  Array ( [P] => 3 [J] => 4 ) 

var_dump

var_dump fonction habituellement utilisée pour déboguer et imprimer les informations ( type et valeur) sur une variable/tableau/objet.

var_dump($var_1);     // this will print  int(5444) 
var_dump($var_2);     // this will print  string(5) "Hello" 
var_dump($var_3);     // this will print  array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } 
var_dump($var_4);     // this will print  array(2) { ["P"]=> string(1) "3" ["J"]=> string(1) "4" }
1
répondu N Randhawa 2018-10-03 17:39:28

ils sont tous les deux des constructions linguistiques. echo renvoie les retours nuls et print renvoie les retours 1. l'écho est considéré comme légèrement plus rapide que l'impression.

0
répondu test 2014-07-24 06:09:17

print_r() peut imprimer de la valeur mais aussi si le second paramètre flag est passé et est TRUE - il retournera le résultat imprimé sous forme de chaîne et rien Envoyer à la sortie standard. À propos de var_dump. Si XDebug debugger est installé, les résultats de sortie seront formatés de manière beaucoup plus lisible et compréhensible.

0
répondu Rinat 2016-03-15 16:09:23