2008-10-24 4 views

Répondre

243

De: http://web.archive.org/web/20090221144611/http://faqts.com/knowledge_base/view.phtml/aid/1/fid/40

  1. vitesse. Il y a une différence entre les deux, mais en termes de rapidité, cela devrait être indifférent à celui que vous utilisez. echo est légèrement plus rapide car il ne définit pas une valeur de retour si vous voulez vraiment descendre à la nitty gravely.

  2. Expression. print() se comporte comme une fonction que vous pouvez faire: $ret = print "Hello World"; Et $ret sera 1. Cela signifie que l'impression peut être utilisée dans le cadre d'une expression plus complexe où l'écho ne le peut pas. Un exemple du manuel PHP:

$b ? print "true" : print "false"; 

impression fait également partie de la table de priorité dont il a besoin d'être si elle doit être utilisé dans une expression complexe. Il est à peu près au fond de la liste de priorité cependant. Seulement "," AND, OR et XOR sont plus bas.

  1. Paramètre (s). La grammaire est: echo expression [, expression[, expression] ... ] Mais echo (expression, expression) n'est pas valide. Ceci serait valide: echo ("howdy"),("partner"); le même que: echo "howdy","partner"; (Mettre les crochets dans cet exemple simple, sert sans but car il n'y a pas de problème de priorité des opérateurs avec un seul terme comme ça.)

Ainsi, l'écho sans parenthèses peut prendre plusieurs paramètres, qui obtiennent concaténer:

echo "and a ", 1, 2, 3; // comma-separated without parentheses 
    echo ("and a 123");  // just one parameter with parentheses 

print() ne peut prendre un paramètre:

print ("and a 123"); 
    print "and a 123"; 
+26

Echo peut également être utilisé dans une opération ternaire: echo ($ b)? 'vrai faux'; – philjohn

+26

@philjohn Je suis sûr que votre déclaration est équiva- lente à: echo (($ b)? 'True': 'false'); et non: (echo ($ b))? 'vrai faux'; L'écho ne fait donc pas partie de la condition réelle de l'opération ternaire. – Bart

+4

Dans l'intérêt de faire quelque chose de pas faisable avec 'echo':' $ b? print "true": die ("false"); ' – Brilliand

5

Comme le suggère le manuel PHP.net, lisez this discussion.

Une différence majeure est que echo peut prendre plusieurs paramètres à la sortie. .: par exemple

echo 'foo', 'bar'; // Concatenates the 2 strings 
print('foo', 'bar'); // Fatal error 

Si vous cherchez à évaluer les résultats d'une instruction de sortie (comme ci-dessous), utilisez print. Sinon, utilisez echo.

$res = print('test'); 
var_dump($res); //bool(true) 
+5

echo ne pas accept echo ('foo', 'bar') ;, mais accepte echo 'foo', 'bar'; – grilix

+2

Je sais que cette réponse est ancienne, mais n'imprime pas toujours 1? D'ailleurs, quand et pourquoi auriez-vous besoin de tester pour être sûr que quelque chose soit imprimé? C'est tout simplement pas nécessaire, jamais! Franchement, l'impression est inutile et devrait être supprimée, en faveur d'ECHO! –

63

Ils sont:

  • impression prend un seul paramètre, alors que l'écho peut avoir plusieurs paramètres.
  • L'impression renvoie une valeur (1) et peut donc être utilisée comme expression.
  • L'écho est légèrement plus rapide.
7

Pour ajouter aux réponses ci-dessus, alors que l'impression ne peut prendre un paramètre, il permettra de concaténation de valeurs multiples, à savoir:

$count = 5; 

print "This is " . $count . " values in " . $count/5 . " parameter"; 

Ceci est 5 valeurs dans 1 paramètre

4

Je pense que print() est plus lent que echo.

J'aime utiliser print() que dans des situations telles que:

echo 'Doing some stuff... '; 
foo() and print("ok.\n") or print("error: " . getError() . ".\n"); 
+0

Pouvez-vous le rendre plus clair, monsieur? – Legend