PHP默认函数参数值, 'pass default value'参数如何 'not last'?

标签 php function parameters default

我们大多数人都知道以下语法:

function funcName($param='value'){
    echo $param;
}
funcName();

Result: "value"

我们想知道如何为“not last”参数传递默认值?我知道这个术语已经过时了,但一个简单的例子是:

function funcName($param1='value1',$param2='value2'){
    echo $param1."\n";
    echo $param2."\n";
}

我们如何完成以下任务:

funcName(---default value of param1---,'non default');

结果:

value1
not default

希望这是有道理的,我们想基本上假设不是最后一个参数的默认值。

谢谢。

最佳答案

PHP 不支持您尝试执行的操作。这个问题的通常解决方案是传递一个参数数组:

function funcName($params = array())
{
    $defaults = array( // the defaults will be overidden if set in $params
        'value1' => '1',
        'value2' => '2',
    );

    $params = array_merge($defaults, $params);

    echo $params['value1'] . ', ' . $params['value2'];
}

示例用法:

funcName(array('value1' => 'one'));                    // outputs: one, 2
funcName(array('value2' => 'two'));                    // outputs: 1, two
funcName(array('value1' => '1st', 'value2' => '2nd')); // outputs: 1st, 2nd
funcName();                                            // outputs: 1, 2

使用这个,所有参数都是可选的。通过传递参数数组,数组中的任何内容都将覆盖默认值。这可以通过使用 array_merge() 来实现。它合并两个数组,用第二个数组中的任何重复元素覆盖第一个数组。

关于PHP默认函数参数值, 'pass default value'参数如何 'not last'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10597114/

相关文章:

C++,将结构特征作为参数传递给函数

PHP 5.5 : accessing a static class member of a dynamic class stored in an object

php - Mysql左连接,按字段中的唯一值计数不起作用

php - Codeigniter 在 Controller 的 foreach 中获取多个数据

c++ - 如何将返回函数中的值作为另一个函数的参数传递,在其中使用它然后适本地调用它 C++?

javascript - 函数与变量之比的原因是什么?

php - 如何使用PHP检查MySQL数据库中是否已存在Id

javascript - 闭包在 javascript 中返回什么?

c - 有没有办法预定义 C 函数参数的预期长度?

sql - 参数化 SQL IN 子句