PHP重载类似于sprintf()?

时间:2010-02-13 20:40:34

标签: php

如何在PHP中编写一个可以接受与emrintf类似的无限个参数的函数?

sprintf("one:%s",$one);
sprintf("one:%s two:%s",$one,$two);
...

4 个答案:

答案 0 :(得分:3)

func_get_args()

来自php.net的例子

function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);

答案 1 :(得分:1)

容易。使用静态参数

声明您的函数
function myprintf ($string)

并使用func_get_args()获取无限制的附加参数。

答案 2 :(得分:1)

一个函数可以接受任意数量的参数;它只需使用以下函数处理它们:func_num_argsfunc_get_argfunc_get_args

这三个手册页面给出了示例,但这里是func_get_args(引用)中的一个:

function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);

输出将是:

Number of arguments: 3<br />
Second argument is: 2<br />
Argument 0 is: 1<br />
Argument 1 is: 2<br />
Argument 2 is: 3<br />

答案 3 :(得分:0)

使用func_get_args()