2012-07-17 134 views
1

我有一個奇怪的錯誤PHP - 警告:printf()函數:參數太少奇怪的問題

當我運行下面的代碼,在一段時間,一旦我得到

Warning: printf(): Too few arguments in /www/api/class.InvoicePayment.inc.php on line 92 

但是我不理解爲什麼會這樣,因爲在我的編碼,我有這條線

if($output!="") 
     printf($output); 

如何能在此獲得的printf即使在輸出變量不爲空警告..

+1

http://us3.php.net/manual/en/function.printf.php基本上您的輸出具有某種佔位符,例如的'%s',並且您沒有傳遞任何應該替換佔位符的值。 – cspray 2012-07-17 01:34:24

+1

一個修正(假設PHP的'printf'類似於C's)將'printf($ output)'改爲'printf(「%s」,$ output)'' – 2012-07-17 02:07:30

回答

3

如果$ output包含一個或多個格式說明符,則可能發生這種情況。你可以用echo而不是printf?

2

正如寫在first answer by James McLeod,也許可以幫助你:

printf(str_tr($output, '%', '%%'); 

你需要逃避的$output第一%字符。這是通過在他們面前增加另一個%來完成的。請參見說明格式代碼的sprintf manual page­Docs,具體說明本部分:

6.一個類型說明符,說明參數數據應視爲什麼類型。可能的類型:

  • % - 字面百分比字符。不需要參數。

這裏最重要的信息是,與%%代替%沒有參數是必需的。

但是,這僅僅是爲了說明,更好的是在你的情況:

print $output; 

你不需要在這裏做任何格式印刷,所以使用print­Docs,而不是printf