php - 如何在函数中使用无限参数(如 PHP isset())

标签 php function parameters parameter-passing param

你知道 PHP 的 isset() 是如何接受多个(也没有限制)参数的吗?

我能做到:

isset($var1,$var2,$var3,$var4,$var5,$var6,$var7,$var8,$var9,$var10,$var11);
//etc etc

我如何能够在我自己的函数中做到这一点?我将如何处理传递的无穷大参数?

他们是怎么做到的?

最佳答案

func_get_args会做你想做的事:

function infinite_parameters() {
    foreach (func_get_args() as $param) {
        echo "Param is $param" . PHP_EOL;
    }
}

您还可以使用 func_get_arg 获取特定参数(它是零索引):

function infinite_parameters() {
    echo func_get_arg(2);
}

但是要小心检查你是否有那个参数:

function infinite_parameters() {
    if (func_num_args() < 3) {
        throw new BadFunctionCallException("Not enough parameters!");
    }
}

您甚至可以将 func_*_arg 和常规参数混合在一起:

function foo($param1, $param2) {
    echo $param1; // Works as normal
    echo func_get_arg(0); // Gets $param1
    if (func_num_args() >= 3) {
        echo func_get_arg(2);
    }
}

但在使用它之前,想一想你是否真的想要有不确定的参数。一个数组还不够吗?

关于php - 如何在函数中使用无限参数(如 PHP isset()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165002/

相关文章:

php - 即使文件具有 777 权限,LibreOffice 转换为 pdf 也会产生文件无法加载错误

php - 使用 jquery 解析 php 脚本返回的 JSON 字符串

javascript - 使用 angularJS 过滤 PHP 列表

c++ - 方法参数

c++ - 参数的隐式默认值?

具有多个通用参数的 java lambda 表达式未编译

php - 是否有基于 PHP 的 Python Nose 实现?

具有相同参数的 Javascript 函数声明

javascript - Meteor JS 全局函数

c - C语言中函数有存储类吗?