【问题标题】:How can I initialize an array's argument to its default value?如何将数组的参数初始化为其默认值?
【发布时间】:2017-12-08 15:17:24
【问题描述】:

这是我的代码:

function myfunc( $arg1, $arg2 = 'sth', $arg3 = 'sth else' ){
    // do stuff
}

现在我想为arg3 设置一个新值,并为arg2 保留默认定义的值。我该怎么做?

类似这样的:

myfunc( true, <keep everything defined as default>, $arg3 = 'new value' );

预期结果是sth in this fiddle

【问题讨论】:

  • 根据您的fiddle,您在调用该函数之前尚未定义$arg2
  • 您的问题不清楚,请补充说明。
  • @YaseenAhmed 我想为arg3 设置一个值,而不为arg2 设置任何值。如您所见,arg3arg2 都是可选的。我想为arg2使用定义的默认值。
  • 你可以使用数组作为参数,如果没有找到,可以在函数内部设置值。
  • @stack 你想要这个吗? 3v4l.org/RntQ9

标签: php function arguments parameter-passing


【解决方案1】:

一种可能的替代方法是让您的函数不接受 3 个参数,而只接受一个数组:

function my_function(array $value = array()) {
    // if set, use $value['key1']
    // if set, use $value['key2']
    // ...
}

然后像这样调用那个函数:

my_function(array(
    'key1' => 'google',
    'key2' => 'yahoo'
));

这将允许您:

  1. 接受任意数量的参数
  2. 所有这些都是可选的

希望它会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-02-25
    • 2017-02-21
    • 1970-01-01
    • 2020-10-26
    • 1970-01-01
    • 2017-11-19
    • 1970-01-01
    • 2011-05-13
    • 2020-06-21
    相关资源
    最近更新 更多