2010-11-12 71 views
3

我何時會在PHP中使用printf而不是echo,爲什麼?我只是不明白爲什麼這很重要。謝謝!什麼是在PHP中使用的printf?

+0

http://www.linuxquestions.org/questions/programming-9/php-printf-vs-echo-649387/ – sunn0 2010-11-12 02:58:07

+0

在我看來,PHP似乎積累了很多語言的文本,並且有幾種不同的方式做任何事。對於C程序員來說printf是有的,echo shell是shell腳本的。適合每個人。 – 2010-11-12 03:08:31

+0

API文檔的存在是有原因的。 – 2010-11-12 03:50:18

回答

10

它與C中使用的方式相同,可以將格式化值替換爲格式字符串。

sprintf manual page上有數百個使用它的例子。

你可以實現一些有用的格式化變量(零填充,對齊,寬度等),這將需要一個echo伴隨着幾個函數調用。

例如,右對齊和零墊一個字符串爲10個字符,但截斷如果超過10個字符:在

printf('[%010.10s]', $string); 

VS

$tmp = ''; 

if (strlen($string) > 10) 
    $tmp = substr($string, 0, 10); 
else 
    $tmp = str_pad($x, 10, '0', STR_PAD_LEFT); 

echo $tmp; 

您可以輕鬆的數字格式八進制,十六進制或二進制,沒有通過函數運行它們的混亂,將結果存儲在一個臨時變量中並將其傳遞到echoprintf函數系列有許多更多用途。

+0

+1,與OP的問題相反,'sprintf'在很多地方都是非常寶貴的工具。 – casablanca 2010-11-12 03:01:09

+0

這更有意義,爲什麼我會使用它回聲。非常感謝,我一直在嘗試谷歌一天左右,我的朋友在這裏重新定向了我!謝謝! – BretHudson 2010-11-12 03:17:27

4

的printf允許你傳遞參數,所以你可以這樣做:

printf("My name is %s and my favorite color is %s", $name, $color); 

,或者您可以使用迴音做同樣的事情,但它不是作爲清潔:

echo "My name is $name and my favorite color is $color" 

這只是其中之一你比較喜歡。

+1

這個技巧對於帶有嵌入變量的翻譯來說變得更加重要:'printf(__('你好,%s,你好嗎?',$ username)'',這個翻譯的字符串是''こんにちは%s,お元気ですか?'。 – deceze 2010-11-12 03:38:56

+0

在工作中,我們始終將此與Zend_Translate結合使用。 – Vic 2010-11-12 17:48:49

2

printf()允許你以某種方式格式化的變量。例如,您可以確定總是將顯示爲%d的內容顯示爲數字。您可以在小數點後顯示具有特定位數的浮點數。您可以用科學記數法顯示數字。您可以將數字轉換爲八進制/十六進制。

如果您想使用echo來完成上述任何操作,您需要在將這些變量放入雙引號字符串之前調用某個函數或另一個函數。知道如何使用printf()可以讓你的工作更簡單。

當您可以使用sprintf()獲取輸出時,它會變得更加強大。