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.
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] =>
)
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 expressionp.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()
etvar_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 deecho
. - alors que
echo
etprint
sont des langues les constructionsprint_r()
etvar_dump()
/var_export()
sont des fonctions régulières. Vous n'avez pas besoin de parenthèses pour joindre les arguments àecho
ouprint
(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'utilisereval()
. Il serait il est préférable d'utiliser un format comme JSON pour stocker et relire les valeurs. La vitesse sera comparable.
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.
echo
N'ayant pas le type de retour
print
Ont le type de retour
print_r()
sorties telles que formatées,
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
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
**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]
print_r()
est utilisé pour imprimer le tableau dans un format lisible par l'homme.
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" }
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.
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.