2009-10-01 61 views
26

有没有更好的方法将数据输出到PHP的HTML页面?php:echo“”,print(),printf()

如果我喜欢做与PHP的一些变种一个div,我会写这样的事情

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 2009-10-01 16:02:30

+0

您还应该使用表示层(例如Smarty)将显示逻辑从应用程序逻辑中分离出来。 Smarty模板可以编译到正常的PHP页面,但是代码保持得更干净。 – 2009-10-01 19:01:09

回答

27

有在PHP echoprint 2间之间的差异:

  • print返回一个值。它始终返回1.

  • echo可以采用逗号分隔的参数列表输出。

总是返回1似乎并不特别有用。用逗号分隔的参数列表可以用多个调用或字符串连接进行模拟。因此,echoprint之间的选择几乎归结为风格。我见过的大多数PHP代码都使用echo

printf()是c的printf()的直接模拟。如果您习惯于使用习惯用法,则可以使用printf()。然而,很多年轻一代的人发现printf()的特殊字符语法比等效的echo代码的可读性差。

有可能在echoprintprintf之间的性能差异,但我不会太因为在一个数据库驱动的Web应用程序(PHP的典型域)挂在他们打印字符串,客户端几乎肯定不是你的瓶颈。最重要的是,任何3人都能完成工作,一人不会比另一人好。这只是一个风格问题。

+7

返回1不是'echo'和'print'之间的唯一区别。恕我直言,主要区别在于'echo'可以输出多个值而不需要连接它们(即,'echo'

', $a, $b, $c, '
';')而'print'不能做到这一点。 – binaryLV 2010-04-23 14:20:35

+0

@binaryLV:好点。我忘了那个。我已经更新了我的答案。谢谢。 – Asaph 2010-04-23 16:03:39

0

你可以做这样的事情:

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

之一好话关于PHP是,你可以将它插入普通的HTML和完成的事情就像上面自如。我一直在PHP中使用echo自己。不知道这是否是“正确”的方式,但它是最简单的。

1

http://us2.php.net/echo

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

或者,如果你没有在短标签,则可能需要

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

,如果你启用了short_open_tag的值为选项,你可以做

<?=$var?> 

但有些人觉得很凌乱。

+0

短标签是邪恶的。它们干扰文档类型定义。 – 2009-10-01 18:59:11

+0

一个人发现它杂乱的例子! – 2009-10-01 21:19:25

0

虽然echoprint几乎相等,你使用不同的值。你的第一个值将导致

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

而第二个将导致

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

但其余的是语义上几乎相等。由于echoprint不是真正的函数,而是特殊的语言结构,所以第一个示例中的括号只是包装单个字符串值而不是参数列表。

另请参阅https://stackoverflow.com/questions/1462581#1462636https://stackoverflow.com/questions/1163473#1163793

1

您还可以使用以下语法:

echo <<<ENDOFTEXT 
     <div> 
      $var 
     </div> 
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

刚刚尝试这一点,你会喜欢的相关信息的很好格式化量:

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

OK,我解释一下:设置一个 “代码” HTML格式var_dump显示变量的值,类型,参数...。

+0

print_r也应该被提及,递归地做几乎相同。 – Atmocreations 2009-10-01 19:55:06

0

我已经阅读过某处,回声比打印更快。但它的性能收益太小了。