2009-10-01 59 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

我已經閱讀過某處,回聲比打印更快。但它的性能收益太小了。