print_r n'est pas exactement un alias de var_dump - il sort dans un format différent. Notamment, la sortie de var_dump inclut également le "type" de chaque variable.
Un autre détail à ajouter et qui peut être utile, est que var_dump tronque les textes très longs, montrant ... et indiquant la longueur restante, par exemple: même '... (longueur = 4482) Si vous utilisez l'écho, cela ne se produit pas.
Yordan
Réponses:
186
printet echosont plus ou moins les mêmes; ce sont deux constructions de langage qui affichent des chaînes. Les différences sont subtiles: printa une valeur de retour de 1, elle peut donc être utilisée dans des expressions alors qu'elle echoa un voidtype de retour; echopeut prendre plusieurs paramètres, bien qu'une telle utilisation soit rare; echoest légèrement plus rapide queprint . (Personnellement, j'utilise toujours echo, jamais print.)
var_dumpaffiche un vidage détaillé d'une variable, y compris son type et le type de tous les sous-éléments (s'il s'agit d'un tableau ou d'un objet). print_rimprime une variable sous une forme plus lisible par l'homme: les chaînes ne sont pas citées, les informations de type sont omises, les tailles de tableau ne sont pas données, etc.
var_dumpest généralement plus utile que print_rlors du débogage, selon mon expérience. C'est particulièrement utile lorsque vous ne savez pas exactement quelles valeurs / types vous avez dans vos variables. Considérez ce programme de test:
@Shore - c'est quelque chose construit dans le langage qui n'est pas une fonction. Ils sont généralement très rapides et ne fonctionnent pas exactement comme les fonctions normales.
alex
3
Révisé deux ans plus tard pour corriger les inexactitudes identifiées dans ces commentaires. Merci à tous, j'ai dû dormir le 7 juin 10. ;-)
Génère une ou plusieurs chaînes séparées par des virgules
Aucune valeur de retour
par exemple echo "String 1", "String 2"
impression
Ne produit qu'une seule chaîne
Retour 1 , donc il peut être utilisé dans une expression
par exemple print "Hello"
ou, if ($expr && print "foo")
print_r ()
Les sorties d' une représentation lisible par l' homme, quelle une valeur
Accepte non seulement les chaînes mais d'autres types, y compris les tableaux et les objets, en les formatant pour être lisibles
Utile lors du débogage
Peut renvoyer sa sortie sous forme de valeur de retour (au lieu d'écho) si le deuxième argument facultatif est donné
var_dump ()
Produit une représentation lisible par l'homme d' un 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, en les formatant pour être lisibles
Utilise un format de sortie différent pour print_r(), par exemple, il imprime également le type de valeurs
Utile lors du débogage
Aucune valeur de retour
var_export ()
Les sorties d' un lisible par l' homme et PHP-exécutable représentation de tout un valeur
Accepte non seulement les chaînes mais d'autres types, y compris les tableaux et les objets, en les formatant pour être lisibles
Utilise un format de sortie différent pour print_r()etvar_dump() - la sortie résultante est un code PHP valide!
Utile lors du débogage
Peut renvoyer sa sortie sous forme de valeur de retour (au lieu d'écho) si le deuxième argument facultatif est donné
Remarques:
Même s'il printpeut être utilisé dans une expression, je recommande aux gens d'éviter de le faire, car il est mauvais pour la lisibilité du code (et parce qu'il est peu probable qu'il soit utile). Les règles de priorité quand il interagit avec d'autres opérateurs peuvent également prêter à confusion. Pour cette raison, je n'ai personnellement jamais de raison de l'utiliser echo.
Alors que echoet printsont des constructions de langage, print_r()et var_dump()/ var_export()sont des fonctions régulières. Vous n'avez pas besoin de parenthèses pour entourer les arguments de echoou print(et si vous les utilisez, ils seront traités comme ils le feraient dans une expression).
Bien que var_export()renvoie un code PHP valide permettant de relire les valeurs plus tard, le fait de s'en remettre au code de production peut faciliter l'introduction de vulnérabilités de sécurité en raison de la nécessité d'utiliser eval(). Il serait préférable d'utiliser un format comme JSON à la place pour stocker et relire les valeurs. La vitesse sera comparable.
Juste une petite note sur le moment où vous voudriez la echo $a, $b;syntaxe quand vous pouvez simplement le faire echo $a . $b;: si $ a ou $ b sont des chaînes vraiment grandes, alors ce dernier utilisera de la mémoire supplémentaire et du temps pour créer une version concaténée séparée des chaînes en mémoire avant peut commencer à sortir soit vers le navigateur.
thomasrutter le
Bien sûr, vous pouvez aussi l'utiliser echo $a; echo $b;.
thomasrutter du
16
Juste pour ajouter à la réponse de John , echodevrait être le seul que vous utilisez pour imprimer du contenu sur la page.
printest légèrement plus lent. var_dump()et print_r()ne doit être utilisé que pour déboguer.
Il convient également de mentionner que print_r()et var_dump()fera écho par défaut, ajoutez print_r()au moins un deuxième argument qui vaut true pour le faire revenir à la place, par exempleprint_r($array, TRUE) .
La différence entre l'écho et le retour sont:
echo: imprime immédiatement la valeur dans la sortie.
return: renvoie la sortie de la fonction sous forme de chaîne. Utile pour la journalisation, etc.
Juste parce que vous avez en quelque sorte soulevé la question, quelle est la différence entre echoing et returning?
David dit de réintégrer Monica
2
wow, j'aurais aimé connaître le paramètre de retour :( en gros, vous pouvez faire $ foo = print_r ($ array, true); et l'utiliser autrement (dans un journal, une table, etc.)
FryGuy
J'ai print_rbeaucoup utilisé le paramètre de retour pendant que je codais PHP. Cependant, j'avais tendance à écrire print_r( $foo, 1 );. C'est plus rapide à taper;) Et à ce sujet, je ne me soucie pas beaucoup de la lisibilité car je trouve que le nom print_rn'est pas très descriptif non plus.
exhuma
var_dump()ne prend pas en charge le deuxième argument lui permettant de renvoyer une valeur comme le print_r()fait, car il var_dump()peut accepter plusieurs arguments pour la sortie.
thomasrutter
@thomasrutter C'est vrai, je ne sais pas pourquoi j'ai écrit ça.
La différence entre echo , print , print_r et var_dump est très simple.
écho
echo n'est en fait pas une fonction mais une construction de langage qui est utilisée 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 également utiliser l'instruction echo avec ou sans parenthèse
echo ("Hello World");// this will print Hello World
impression
Tout comme la construction d' écho, l' impression est également une construction de langage et non une fonction réelle. La différence entre echo et print est que print n'accepte qu'un seul argument et print renvoie toujours 1. Alors que echo n'a pas de valeur de retour. Donc, l' instruction print peut être utilisée dans les expressions.
print"Hello World";// this will print Hello Worldprint"Hello ","World";// Multiple arguments - NOT POSSIBLE with print
$var_1=55;print"$var_1";// this will print 55print"var_1=".$var_1;// this will print var_1=55print45+$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 l' écho , l' impression peut être utilisée avec ou sans parenthèses.
print("Hello World");// this will print Hello World
print_r
La fonction print_r () est utilisée pour imprimer des informations lisibles par l'homme sur une variable. Si l'argument est un tableau, la fonction print_r () affiche ses clés et ses éléments (idem 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
fonction var_dump habituellement utilisée pour le débogage et affiche 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" }
Il y a tellement de problèmes avec cette réponse. printn'est pas une fonction réelle, c'est une construction de langage comme echo. Il peut également être utilisé comme une déclaration. echon'est pas une déclaration et ne peut pas être utilisée en une seule. printne nécessite pas de parenthèses, ni l'écho ni l'impression n'utilisent les parenthèses comme le ferait une fonction. Vous avez également manqué l'une des principales différences - l'écho accepte plusieurs chaînes à l'écho séparées par des virgules.
thomasrutter
2
... et vous avez soumis cette réponse alors que plusieurs réponses existaient déjà et contenaient les informations correctes .
thomasrutter
2
** Echocan accepte plusieurs expressions alors que l'impression ne le peut pas. La fonction PHP Print_r () est utilisée pour renvoyer un tableau sous une forme lisible par l'homme. Il est simplement écrit
echo: echo est une construction de langage où il n'est pas nécessaire d'utiliser des parenthèses avec lui et il peut prendre n'importe quel nombre de paramètres et retourner void.
print: c'est une construction de langage où il n'est pas nécessaire d'utiliser des parenthèses, il suffit de prendre un paramètre et de retourner
1 always.intprint(param1);print"test1";print"test1","test2";// It will give syntax error
prinf: C'est une fonction qui prend au moins une chaîne et un 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:HelloShailesh how are you?27
echo returns void so its execution is faster than printand printf
print_r () peut imprimer la valeur mais aussi si le second paramètre indicateur est passé et est VRAI - il retournera le résultat imprimé sous forme de chaîne et rien ne sera envoyé à la sortie standard. À propos de var_dump. Si le débogueur XDebug est installé, les résultats de sortie seront formatés de manière beaucoup plus lisible et compréhensible.
Réponses:
print
etecho
sont plus ou moins les mêmes; ce sont deux constructions de langage qui affichent des chaînes. Les différences sont subtiles:print
a une valeur de retour de 1, elle peut donc être utilisée dans des expressions alors qu'elleecho
a unvoid
type de retour;echo
peut prendre plusieurs paramètres, bien qu'une telle utilisation soit rare;echo
est légèrement plus rapide queprint
. (Personnellement, j'utilise toujoursecho
, jamaisprint
.)var_dump
affiche un vidage détaillé d'une variable, y compris son type et le type de tous les sous-éléments (s'il s'agit d'un tableau ou d'un objet).print_r
imprime une variable sous une forme plus lisible par l'homme: les chaînes ne sont pas citées, les informations de type sont omises, les tailles de tableau ne sont pas données, etc.var_dump
est généralement plus utile queprint_r
lors du débogage, selon mon expérience. C'est particulièrement utile lorsque vous ne savez pas exactement quelles valeurs / types vous avez dans vos variables. Considérez ce programme de test:Avec
print_r
vous ne pouvez pas faire la différence entre0
et0.0
, oufalse
et''
:la source
écho
Aucune valeur de retour
par exemple
echo "String 1", "String 2"
impression
Retour
1
, donc il peut être utilisé dans une expressionpar exemple
print "Hello"
ou,
if ($expr && print "foo")
print_r ()
var_dump ()
print_r()
, par exemple, il imprime également le type de valeursvar_export ()
print_r()
etvar_dump()
- la sortie résultante est un code PHP valide!Remarques:
print
peut être utilisé dans une expression, je recommande aux gens d'éviter de le faire, car il est mauvais pour la lisibilité du code (et parce qu'il est peu probable qu'il soit utile). Les règles de priorité quand il interagit avec d'autres opérateurs peuvent également prêter à confusion. Pour cette raison, je n'ai personnellement jamais de raison de l'utiliserecho
.echo
etprint
sont des constructions de langage,print_r()
etvar_dump()
/var_export()
sont des fonctions régulières. Vous n'avez pas besoin de parenthèses pour entourer les arguments deecho
ouprint
(et si vous les utilisez, ils seront traités comme ils le feraient dans une expression).var_export()
renvoie un code PHP valide permettant de relire les valeurs plus tard, le fait de s'en remettre au code de production peut faciliter l'introduction de vulnérabilités de sécurité en raison de la nécessité d'utilisereval()
. Il serait préférable d'utiliser un format comme JSON à la place pour stocker et relire les valeurs. La vitesse sera comparable.la source
echo $a, $b;
syntaxe quand vous pouvez simplement le faireecho $a . $b;
: si $ a ou $ b sont des chaînes vraiment grandes, alors ce dernier utilisera de la mémoire supplémentaire et du temps pour créer une version concaténée séparée des chaînes en mémoire avant peut commencer à sortir soit vers le navigateur.echo $a; echo $b;
.Juste pour ajouter à la réponse de John ,
echo
devrait être le seul que vous utilisez pour imprimer du contenu sur la page.print
est légèrement plus lent.var_dump()
etprint_r()
ne doit être utilisé que pour déboguer.Il convient également de mentionner que
print_r()
etvar_dump()
fera écho par défaut, ajoutezprint_r()
au moins un deuxième argument qui vaut true pour le faire revenir à la place, par exempleprint_r($array, TRUE)
.La différence entre l'écho et le retour sont:
la source
echo
ing etreturn
ing?print_r
beaucoup utilisé le paramètre de retour pendant que je codais PHP. Cependant, j'avais tendance à écrireprint_r( $foo, 1 );
. C'est plus rapide à taper;) Et à ce sujet, je ne me soucie pas beaucoup de la lisibilité car je trouve que le nomprint_r
n'est pas très descriptif non plus.var_dump()
ne prend pas en charge le deuxième argument lui permettant de renvoyer une valeur comme leprint_r()
fait, car ilvar_dump()
peut accepter plusieurs arguments pour la sortie.Ne pas avoir de type de retour
Avoir un type de retour
Sorties telles que formatées,
la source
La différence entre echo , print , print_r et var_dump est très simple.
echo n'est en fait pas une fonction mais une construction de langage qui est utilisée pour imprimer la sortie. Il est légèrement plus rapide que l'impression.
Vous pouvez également utiliser l'instruction echo avec ou sans parenthèse
Tout comme la construction d' écho, l' impression est également une construction de langage et non une fonction réelle. La différence entre echo et print est que print n'accepte qu'un seul argument et print renvoie toujours 1. Alors que echo n'a pas de valeur de retour. Donc, l' instruction print peut être utilisée dans les expressions.
Tout comme l' écho , l' impression peut être utilisée avec ou sans parenthèses.
La fonction print_r () est utilisée pour imprimer des informations lisibles par l'homme sur une variable. Si l'argument est un tableau, la fonction print_r () affiche ses clés et ses éléments (idem pour les objets).
fonction var_dump habituellement utilisée pour le débogage et affiche les informations (type et valeur) sur une variable / tableau / objet.
la source
Écho :
C'est une instruction et non une fonction Aucune valeur de retour
Non requis les parenthèses
Ne pas imprimer le tableau
Impression
C'est une vraie fonction
Type de retour 1
Obligatoire les parenthèses
Ne pas imprimer le tableau
Print_r
Impression au format lisible par l'homme
Chaîne absente des guillemets
Pas d'informations détaillées de type variable et tout
var_dump
Toutes les informations de vidage de variable comme le type d'élément et le sous-élément
la source
print
n'est pas une fonction réelle, c'est une construction de langage comme echo. Il peut également être utilisé comme une déclaration.echo
n'est pas une déclaration et ne peut pas être utilisée en une seule.print
ne nécessite pas de parenthèses, ni l'écho ni l'impression n'utilisent les parenthèses comme le ferait une fonction. Vous avez également manqué l'une des principales différences - l'écho accepte plusieurs chaînes à l'écho séparées par des virgules.** Echocan accepte plusieurs expressions alors que l'impression ne le peut pas. La fonction PHP Print_r () est utilisée pour renvoyer un tableau sous une forme lisible par l'homme. Il est simplement écrit
la source
echo: echo est une construction de langage où il n'est pas nécessaire d'utiliser des parenthèses avec lui et il peut prendre n'importe quel nombre de paramètres et retourner void.
print: c'est une construction de langage où il n'est pas nécessaire d'utiliser des parenthèses, il suffit de prendre un paramètre et de retourner
prinf: C'est une fonction qui prend au moins une chaîne et un style de format et renvoie la longueur de la chaîne de sortie.
la source
print_r()
est utilisé pour imprimer la matrice dans un format lisible par l'homme.la source
print_r () peut imprimer la valeur mais aussi si le second paramètre indicateur est passé et est VRAI - il retournera le résultat imprimé sous forme de chaîne et rien ne sera envoyé à la sortie standard. À propos de var_dump. Si le débogueur XDebug est installé, les résultats de sortie seront formatés de manière beaucoup plus lisible et compréhensible.
la source
ils sont tous deux des constructions de langage. echo renvoie void et print renvoie 1. echo est considéré comme légèrement plus rapide que print.
la source