功能仅接受2个以上6个参数。 Func_num_args返回2

时间:2012-11-22 22:14:42

标签: php function arguments

我有一个奇怪的问题。基本上我有一个由smarty模板引擎调用的函数,它应该接受6个参数。实际上问题是,它只接受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上运行的PHP版本5.4.3

1 个答案:

答案 0 :(得分:2)

func_num_args()返回在调用时实际传递给函数的参数数量,而不是接受的参数数量。这是不可能的,因为PHP总是接受任意数量的参数

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

http://codepad.org/nhqgb5kK