2012-11-22 71 views
0

我有一個奇怪的問題。基本上我有一個函數,它由smarty模板引擎調用,並且應該接受6個參數。其實問題是,它只接受2!功能只接受2個參數以上的6個參數。 Func_num_args返回2

而且更奇怪的,呼籲func_num_args()該函數內部紅粉我太...但有一個看起來它

function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false, $charset = 'UTF-8') 
{ 
var_dump($break_words); 
var_dump(func_num_args()); 

if (!$length) 
    return ''; 

if (Tools::strlen($string) > $length) 
{ 
    $length -= min($length, Tools::strlen($etc)); 
    if (!$break_words && !$middle) 
     $string = preg_replace('/\s+?(\S+)?$/u', '', Tools::substr($string, 0, $length+1, $charset)); 
    return !$middle ? Tools::substr($string, 0, $length, $charset).$etc : Tools::substr($string, 0, $length/2, $charset).$etc.Tools::substr($string, -$length/2, $length, $charset); 
} 
else 
    return $string; 
} 

那些其它參數設置,因爲「斷詞」被輸出,如果我改變他們,效果很明顯。真奇怪。有沒有解決方法?當地WAMP

回答

2

func_num_args()運行

PHP版本5.4.3返回參數的數量,是調用,而不是接受參數的數目時實際上傳遞給函數。這不會前夕是不可能的,因爲PHP將始終接受的參數

function foo() { 
    var_dump(func_num_args()); 
    var_dump(func_get_args()); 
} 
foo(1, 'a', null, true); 

http://codepad.org/nhqgb5kK

+0

呀任意數,但實際上該功能被傳遞5個參數,這就是問題所在 – NemoPS