php: echo"", print (), printf()

y a-t-il une meilleure façon de produire des données vers une page html avec PHP?

si j'aime faire une div avec un certain 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 mieux, 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 de beaucoup plus!

27
demandé sur shnisaka 2009-10-01 19:54:32

8 réponses

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

  • print renvoie une valeur. Il retourne toujours 1.

  • echo peut prendre une liste d'arguments délimitée par une virgule.

toujours retourner 1 ne semble pas particulièrement utile. Et une liste d'arguments délimitée par une virgule Peut être simulée avec appels multiples ou concaténation de chaîne de caractères. Donc, le choix entre echo et print est plutôt une question de style. La plupart du code PHP que j'ai vu utilise echo .

printf() est un analogue direct de c printf() . Si vous êtes à l'aise dans le langage courant, vous pouvez utiliser printf() . Beaucoup de gens dans la jeune génération cependant, trouver printf() l 'syntaxe de caractères spéciaux pour être moins lisible que l'équivalent echo code.

il y a probablement des différences dans les performances entre echo , print et printf , mais je ne serais pas trop accroché sur eux car dans une application web pilotée par une base de données (domaine typique de PHP), l'impression de chaînes au client n'est presque certainement pas votre goulot d'étranglement. L'essentiel, c'est que l'un ou l'autre des trois fera le travail et que l'un ne sera pas meilleur que l'autre. C'est juste une question de style.

27
répondu Asaph 2010-04-23 16:03:16

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 une grande différence. Cela fonctionne avec des guillemets. 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
6
répondu Atmocreations 2009-10-01 16:03:30

Juste essayer ce que tu vas aimer le bien formaté quantité d'infos :

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

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

2
répondu JF Simon 2009-10-01 18:55:02

http://us2.php.net/echo

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

ou si vous n'avez pas d'étiquettes courtes, vous pourriez avoir besoin de

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

si vous avez l'option short_open_tag activée, vous pouvez faire

<?=$var?>

mais certains trouvent ça bordélique.

1
répondu Will Shaver 2009-10-01 15:58:26

Vous pouvez également utiliser la syntaxe suivante:

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

assurez-vous juste que L'ENDOFTEXT n'est pas indenté .

1
répondu Anax 2009-10-01 16:02:28

vous pourriez faire quelque chose comme ça:

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

une des bonnes choses à propos de PHP est que vous pouvez l'insérer dans le HTML régulier, et accomplir des choses comme celles ci-dessus avec facilité. J'ai toujours utilisé echo moi-même en PHP. Je ne sais pas si c'est la "bonne" façon, mais c'est la plus facile.

0
répondu Scott 2009-10-01 15:57:43

alors que echo et print sont presque égaux, vous utilisez des valeurs différentes. Votre première valeur résultera en

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

alors que le second aboutira à

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

mais le reste est sémantiquement presque égal. Puisque echo et print ne sont pas des fonctions réelles mais des constructions linguistiques spéciales, la parenthèse dans votre premier exemple est juste envelopper le la valeur d'une chaîne de caractères et non la liste des paramètres.

Voir aussi /q/php echo-inclure-20566/"/q/require-once-or-die-not-working-74586/">https://stackoverflow.com/questions/1163473#1163793 .

0
répondu Gumbo 2017-05-23 10:31:06

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.

0
répondu redben 2010-06-13 13:44:14