2009-10-01 8 views
26

Existe-t-il un meilleur moyen de sortir des données vers une page html avec PHP?php: echo "", print(), printf()

Si je veux faire un div avec une var en php, je vais écrire quelque chose comme ça

print ('<div>'.$var.'</div>'); 

ou

echo "'<div>'.$var.'</div>'"; 

Quelle est la bonne façon de le faire?

Ou une meilleure façon, remplir un $tempvar et l'imprimer une fois? comme ça:

$tempvar = '<div>'.$var.'</div>' 
print ($tempvar); 

En fait, dans la vraie vie, le var sera rempli avec beaucoup plus!

+0

Voir http://stackoverflow.com/questions/1006586/is-there-any-difference-between-print-and-echo-in-php/1006600#1006600 – karim79

+0

Vous devez également utiliser une couche de présentation (telle que Smarty) pour séparer la logique d'affichage de la logique de votre application. Les modèles Smarty sont compilés en pages PHP normales, mais votre code reste beaucoup plus propre. –

Répondre

27

Il y a 2 différences entre echo et print en PHP:

  • print retourne une valeur. Il renvoie toujours 1.

  • echo peut prendre une liste délimitée par des virgules d'arguments à afficher.

Toujours retourner 1 ne semble pas particulièrement utile. Et une liste d'arguments délimités par des virgules peut être simulée avec plusieurs appels ou concaténation de chaînes. Donc, le choix entre echo et print revient à peu près au style. La plupart du code PHP que j'ai vu utilise echo. Est un analogue direct de printf() de c. Si vous êtes à l'aise dans l'idiome, vous pouvez utiliser printf(). Cependant, beaucoup de gens dans la jeune génération trouvent que la syntaxe des caractères spéciaux de printf() est moins lisible que le code équivalent echo.

Il y a probablement des différences de performance entre echo, print et printf, mais je ne serais pas trop accroché sur eux depuis dans une base de données application Web axée sur (domaine typique de PHP), les chaînes d'impression au client est presque certainement pas votre goulot d'étranglement L'essentiel est que l'un des 3 fera le travail et l'autre n'est pas meilleur qu'un autre. C'est juste une question de style.

+7

Renvoyer 1 n'est PAS la seule différence entre 'echo' et' print'. À mon humble avis, la principale différence est que 'echo' peut produire plusieurs valeurs sans les concaténer (c.-à-d., 'echo '

', $a, $b, $c, '
';') alors que 'print' ne peut pas faire cela. – binaryLV

+0

@binaryLV: Bon point. J'ai oublié cela. J'ai mis à jour ma réponse. Merci. – Asaph

0

Vous pourriez faire quelque chose comme ceci:

<div><?php echo $var; ?></div> 

Une des belles choses sur PHP est que vous pouvez l'insérer dans le code HTML régulier, et d'accomplir des choses comme ci-dessus avec la facilité. J'ai toujours utilisé l'écho moi-même en PHP. Je ne sais pas si c'est la "bonne" façon, mais c'est la plus facile.

1

http://us2.php.net/echo

<div><? print($var); ?></div> 

Ou si vous ne disposez pas de balises courtes, vous devrez peut-être

<div><?php print($var); ?></div> 

si vous avez la possibilité short_open_tag activée, vous pouvez faire

<?=$var?> 

Mais certains trouvent cela désordonné.

+0

Les étiquettes courtes sont mauvaises. Ils interfèrent avec les définitions de doctype. –

+0

Un exemple de quelqu'un qui trouve ça en désordre! –

0

Alors que echo et print sont presque égaux, vous utilisez des valeurs différentes. Votre première valeur entraînera

<div><value of $var><div>

tandis que la seconde se traduira par

'<div>'.<value of $var>.'<div>'

Mais le reste est sémantiquement à peu près égale. Puisque echo et print ne sont pas de vraies fonctions mais des constructions de langage spéciales, la parenthèse dans votre premier exemple ne fait qu'encapsuler la valeur de la chaîne unique et non la liste des paramètres. Voir aussi https://stackoverflow.com/questions/1462581#1462636 et https://stackoverflow.com/questions/1163473#1163793.

1

Vous pouvez également utiliser la syntaxe suivante:

echo <<<ENDOFTEXT 
     <div> 
      $var 
     </div> 
ENDOFTEXT; 

Assurez-vous que le Délimiteur de fin n'est pas en retrait.

6

vous pouvez même écrire

$var = "hello"; 

echo "Some Text $var some other text"; 
// output: 
// Some Text hello some other text 

ou

print("Some Text $var some other text"); 
// output: 
// Some Text hello some other text 

ne fait pas grande différence. Cela fonctionne uniquement avec des guillemets doubles. Avec des guillemets simples, ce n'est pas le cas. exemple:

$var = "hello"; 

echo 'Some Text $var some other text'; // Note the single quotes! 
// output: 
// Some Text $var some other text 

ou

print('Some Text $var some other text'); // Note the single quotes! 
// output: 
// Some Text $var some other text 
2

Juste essayer cela, vous allez adorer le montant bien formated des infos:

<?php 
    echo '<pre>'; 
    var_dump($your_var); 
    echo '</pre>'; 
?> 

OK, j'explique: définir un "code" format html et var_dump montre la valeur, le type, les paramètres ... de la variable.

+0

print_r devrait également être mentionné, ce qui fait à peu près la même chose, récursivement. – Atmocreations

0

J'ai lu quelque part que l'écho est plus rapide que l'impression. Mais c'est juste trop petit d'un gain de performance.