php - 在 PHP 函数中使用数组作为默认参数

标签 php arrays

是否可以在 PHP 函数中使用数组作为默认参数?

我想做以下事情:

$arr = array(1,2,3,4);

function sample($var1, $var2, $var3 = $arr){
    echo $var1.$var2;
    print_r($var3);
}

sample('a','b');
// Should still work without the third parameter and default to $arr

最佳答案

不,这是不可能的,默认值的右侧表达式必须是常量或数组字面量,即

function sample($var1, $var2, $var3 = array(1, 2, 3, 4))
{
}

如果你想要这种行为,你可以使用闭包:

$arr = array(1, 2, 3, 4);

$sample = function ($var1, $var2, array $var3 = null) use ($arr) {
    if (is_null($var3)) {
        $var3 = $arr;
    }

    // your code
}

$sample('a', 'b');

你也可以用一个类来表达它:

class Foo
{
    private static $arr = array(1, 2, 3, 4);

    public static function bar($var1, $var2, array $var3 = null)
    {
        if (is_null($var3)) {
            $var3 = self::$arr;
        }

        // your code here
    }
}

Foo::bar('a', 'b');

关于php - 在 PHP 函数中使用数组作为默认参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456727/

相关文章:

php - 当为 php yiiframework 上传新图像时从文件夹中删除图像

php - 如何使用 php 或 javascript 让网站上的所有用户共享通用时区?

arrays - bash:如何更新隐式子 shell 中的关联数组?

Java数组值被放入错误的数组中

android - 你如何在Android中返回以下嵌套JSON数组的内容?

php - mysqli_rollback($ conn)不起作用

php - 替换 Magento Zend_Mail_Protocol_Smtp

PHPUnit_Extensions_Database_Testcase 返回未定义的方法

python - 多处理 Python 中的共享数组

java - 在java中从同一数组创建唯一的字符组合