2011-02-25 70 views
0

我只是想知道是否忽略sprintf的一個參數會導致任何問題。php-sprintf非常簡單的問題

我記不住,但我認爲我的網站之一,如果我省略了錯誤的參數,但我試過它在不同的服務器上,它不會發布任何問題與所有PHP錯誤通知打開。

只是想仔細檢查!

例子:

​​
+0

它會浪費CPU週期,因爲sprintf仍然會解析查找格式代碼的字符串,但這不會是錯誤。另一方面,不提供所有格式字符的值將是一個錯誤。 'sprintf('這是%d十進制');'會失敗。 – 2011-02-25 20:38:31

回答

1

如果傳遞的參數太少就會報錯,但太多的罰款。就像PHP的其他部分一樣,如果你傳遞了太多的參數,他們就會被忽略。

$ php -r "echo sprintf('foo %s');" 
PHP Warning: printf(): Too few arguments in Command line code on line 1 
PHP Stack trace: 
PHP 1. {main}() Command line code:0 
PHP 2. printf() Command line code:1 

Warning: printf(): Too few arguments in Command line code on line 1 

Call Stack: 
    0.0005  314336 1. {main}() Command line code:0 
    0.0006  314408 2. printf() Command line code:1 

$ php -r "printf('foo %s', 'foo', 'bar');" 
foo foo 
+0

真棒,不記得之前我有什麼錯誤,但太少的參數聽起來像是什麼。這解決了我的問題,謝謝! – Joe 2011-02-25 20:58:21