2009-10-01 2 views
26

Есть ли лучший способ вывода данных на страницу html с PHP?php: echo "", print(), printf()

Если я хотел бы сделать DIV с некоторыми вар в PHP, я напишу что-то вроде этого

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

или

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

Что такое правильный способ сделать это?

Или лучше, заполните $tempvar и распечатайте его один раз? например:

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

Фактически, в реальной жизни var будет заполняться гораздо большим количеством!

+0

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

+0

Вы также должны использовать уровень представления (например, Smarty), чтобы отделить логику отображения от вашей логики приложения. Шаблоны Smarty компилируются на обычные PHP-страницы, но ваш код остается намного чище. –

ответ

27

Есть 2 различия между echo и print в PHP:

  • print возвращает значение. Он всегда возвращает 1.

  • echo может принимать список аргументов с разделителями-запятыми.

Всегда возвращающийся 1 не кажется особенно полезным. И список аргументов с разделителями-запятыми можно моделировать с помощью нескольких вызовов или конкатенации строк. Таким образом, выбор между echo и print в значительной степени сводится к стилю. Большинство PHP-кода, которые я видел, использует echo.

printf() является прямым аналогом c's printf(). Если вам удобно в идиоме, вы можете использовать printf(). Многие люди в младшем поколении, однако, находят 's специальный синтаксис символов, чтобы быть менее читаемым, чем эквивалентный код echo.

Есть, вероятно, разница в производительности между echo, print и printf, но я бы не слишком зацикливаться на них, так как в основе баз данных веб-приложений (типичный домен РНР), печатные строки для клиента почти наверняка не ваше узкое место. Суть в том, что любая из трех будет выполнять свою работу, а другая не лучше другой. Это просто вопрос стиля.

+7

Возврат 1 не является единственной разницей между 'echo' и' print'. ИМХО основное отличие состоит в том, что 'echo' может выводить несколько значений без их конкатенации (т., 'echo '

', $a, $b, $c, '
';'), в то время как 'print' не может этого сделать. – binaryLV

+0

@binaryLV: Хорошая точка. Я забыл об этом. Я обновил свой ответ. Благодарю. – Asaph

0

Вы могли бы сделать что-то вроде этого:

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

Одна из хороших вещей о PHP является то, что вы можете вставить его в обычную HTML, и выполнять такие вещи, как выше с легкостью. Я всегда использовал эхо себя в PHP. Не уверен, что это «правильный» способ, но это самый простой.

1

http://us2.php.net/echo

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

Или, если вы не имеете короткие теги, вы, возможно, потребуется

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

если включена опция short_open_tag вы можете сделать

<?=$var?> 

Но некоторые находят это грязным.

+0

Короткие ярлыки злые. Они мешают определениям doctype. –

+0

Пример того, кто считает это грязным! –

0

В то время как echo и print почти равны, вы используете разные значения. Ваше первое значение приведет к

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

в то время как второй будет приводить к

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

Но остальные семантически почти равны. Поскольку echo и print не являются реальными функциями, а специальными языковыми конструкциями, скобки в первом примере - это просто одно значение строки, а не список параметров.

См. Также https://stackoverflow.com/questions/1462581#1462636 и https://stackoverflow.com/questions/1163473#1163793.

1

Вы также можете использовать следующий синтаксис:

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

Просто убедитесь, что ENDOFTEXT не отступом.

6

вы можете даже написать

$var = "hello"; 

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

или

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

не делает большой разницы. Это работает только с двойными кавычками. С одинарными кавычками это не так. Пример:

$var = "hello"; 

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

или

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

Просто попробуйте это вы полюбите хорошо отформатированное количество Infos:

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

ОК, я объясняю: установить "код" формат HTML и var_dump показывает значение, тип, параметры ... переменной.

+0

print_r следует упомянуть, что делает почти то же самое, рекурсивно. – Atmocreations

0

Я где-то читал, что эхо быстрее, чем печать. Но его слишком мало производительности.

Смежные вопросы