J'utilise echo et print_r
beaucoup, et n'utilisent presque jamais l'impression.
Je sens echo
est une macro, et print_r
est un alias de var_dump
.
Mais ce n'est pas la façon habituelle d'expliquer les différences.
J'utilise echo et print_r
beaucoup, et n'utilisent presque jamais l'impression.
Je sens echo
est une macro, et print_r
est un alias de var_dump
.
Mais ce n'est pas la façon habituelle d'expliquer les différences.
print
et echo
sont plus ou moins les mêmes ; ce sont tous deux des constructions linguistiques qui affichent des chaînes de caractères. Les différences sont subtiles : print
a une valeur de retour de 1, il peut donc être utilisé dans des expressions alors que echo
a un void
type de retour ; echo
peut prendre plusieurs paramètres, bien que cette utilisation soit rare ; echo
est légèrement plus rapide que print
. (Personnellement, j'utilise toujours echo
jamais print
.)
var_dump
affiche une description détaillée d'une variable, y compris son type et le type de ses sous-éléments (s'il s'agit d'un tableau ou d'un objet). print_r
imprime une variable sous une forme plus lisible pour l'homme : les chaînes de caractères ne sont pas citées, les informations de type sont omises, les tailles des tableaux ne sont pas indiquées, etc.
var_dump
est généralement plus utile que print_r
lors du débogage, d'après 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 :
$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] =>
)
@Shore - c'est quelque chose de construit dans le langage qui n'est pas une fonction. Ils sont généralement très rapides, et ne fonctionnent pas exactement comme des fonctions normales.
Édité deux ans plus tard pour corriger les inexactitudes identifiées dans ces commentaires. Merci à tous, je devais dormir le 7 juin 2010 ;-)
echo
Pas de valeur de retour
par exemple echo "String 1", "String 2"
imprimer
Renvoie à 1
afin qu'il puisse être utilisé dans une expression
par exemple print "Hello"
ou, if ($expr && print "foo")
print_r()
var_dump()
print_r()
par exemple, il imprime également le type de valeursNotes :
print
peut être utilisé dans une expression, j'éviterais généralement de le faire pour des raisons de lisibilité (et parce qu'il est peu probable que cela soit jamais utile). Les règles de précédence lorsqu'il interagit avec d'autres opérateurs peuvent également prêter à confusion.echo
et print
sont des constructions linguistiques, print_r()
et var_dump()
sont des fonctions régulières. Vous n'avez pas besoin de parenthèses pour encadrer les arguments de la fonction echo
ou print
(et si vous les utilisez, ils seront traités comme ils le seraient dans une expression).
Juste une petite remarque sur le moment où vous voudriez que la echo $a, $b;
alors que vous pouvez simplement faire echo $a . $b;
si $a ou $b sont des chaînes de caractères très volumineuses, cette dernière utilisera de la mémoire et du temps supplémentaires pour créer une version concaténée séparée des chaînes de caractères en mémoire avant de pouvoir commencer à les afficher dans le navigateur.
Juste pour ajouter à La réponse de Jean , echo
doit être le seul que vous utilisez pour imprimer du contenu sur la page.
print
est légèrement plus lent. var_dump()
et print_r()
ne doit être utilisé que pour le débogage.
Il convient également de mentionner que print_r()
et var_dump()
fera écho par défaut, ajoutez un deuxième argument à print_r()
au moins qui évalue à true pour qu'il retourne à la place, par exemple print_r($array, TRUE)
.
La différence entre l'écho et le retour sont :
Juste parce que vous avez en quelque sorte soulevé la question, quelle est la différence entre echo
et return
de l'UE ?
J'aurais aimé connaître le paramètre de retour :( en fait, vous pouvez faire $foo = print_r($array, true) ; et l'utiliser d'autres façons (dans un journal, un tableau, etc.).
J'ai utilisé le print_r
renvoyer le paramètre assez souvent lorsque 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 de l'entreprise n'a rien à voir avec les autres. print_r
pas très descriptive non plus.
Echo :
Il s'agit d'une déclaration et non d'une fonction Pas de valeur de retour
Non requis les parenthèses
Pas d'impression du tableau
Imprimer
C'est une fonction réelle
Type de retour 1
Requis les parenthèses
Pas d'impression du tableau
Imprimer_r
Imprimer dans un format lisible par l'homme
String not in Quotes
Pas d'informations détaillées sur la variable, comme le type et tout le reste
var_dump
Toutes les informations de vidage de la variable comme le type d'élément et de sous-élément
Il y a tellement de problèmes avec cette réponse. print
est pas une véritable fonction, c'est une construction du langage tout comme echo. Elle peut également être utilisée comme une déclaration. echo
est pas une déclaration ni ne peut être utilisé dans une déclaration. print
fait pas ne nécessitent pas de parenthèses, et ni echo ni print n'utilisent les parenthèses comme le ferait une fonction. Vous avez également omis l'une des principales différences - echo accepte plusieurs chaînes à répercuter séparées par des virgules.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Print_r n'est pas exactement un alias de var_dump - il produit dans un format différent. Notamment, la sortie de var_dump inclut également le "type" de chaque variable.
0 votes
Référence : Comparaison des fonctions print et echo de PHP
0 votes
Un autre détail à ajouter et qui peut être utile, est que var_dump tronque les textes très longs, en montrant ... et en indiquant la longueur restante, par exemple : même '.... (longueur = 4482) Si vous utilisez echo, cela ne se produit pas.