当前位置:  开发笔记 > 编程语言 > 正文

你如何在PHP中创建可选参数?

如何解决《你如何在PHP中创建可选参数?》经验,为你挑选了6个好方法。

在PHP手册中,为了显示带有可选参数的函数的语法,它们在每组依赖的可选参数周围使用括号.例如,对于该date()功能,手册内容为:

string date ( string $format [, int $timestamp = time() ] )

哪里$timestamp是可选参数,当留空时它默认为time()函数的返回值.

在PHP中定义自定义函数时,如何创建这样的可选参数?



1> Jeff Winkwor..:

与手册非常相似=,在参数定义中使用等号():

function dosomething($var1, $var2, $var3 = 'somevalue'){
    // Rest of function here...
}



2> Ross..:

参数的默认值必须是常量表达式.它不能是变量或函数调用.

但是,如果您需要此功能:

function foo($foo, $bar = false)
{
    if(!$bar)
    {
        $bar = $foo;
    }
}

假设$bar当然不应该是布尔值.


Null是一个更好的默认值.
@DooMMasteR,这里,你的意思是`$ bar === false` - 这是一个应该在`$ bar`默认为'false`时完成的动作.如果传入`0`,这将避免不正确的操作,因此它确实有效 - 除非需要布尔值.正如Kzqai所说,更通用的解决方案是使用`$ bar = null`,因为当$ bar的值为布尔值时也可以使用它.然后测试成为`if(is_null($ bar))`或`if($ bar === null)`.

3> gregh..:

我发现有用的一些注意事项:

保持默认值在右侧.

function whatever($var1, $var2, $var3="constant", $var4="another")

参数的默认值必须是常量表达式.它不能是变量或函数调用.



4> mk...:

为可选参数指定默认值.

function date ($format, $timestamp='') {
}



5> Lars Gyrup B..:

日期函数将定义如下:

function date($format, $timestamp = null)
{
    if ($timestamp === null) {
        $timestamp = time();
    }

    // Format the timestamp according to $format
}

通常,您会将默认值设置为:

function foo($required, $optional = 42)
{
    // This function can be passed one or more arguments
}

但是,只有文字才是有效的默认参数,这就是我null在第一个例子中用作默认参数的原因,而不是 $timestamp = time()将其与空检查结合起来.文字包括数组(array()[]),布尔,数字,字符串和null.



6> Gergely Luka..:

如果您不知道需要处理多少属性,可以使用...PHP 5.6中引入的variadic参数列表标记()(请参阅此处的完整文档).

句法:

function  ([ ]...<$paramName>) {}

例如:

function someVariadricFunc(...$arguments) {
  foreach ($arguments as $arg) {
    // do some stuff with $arg...
  }
}

someVariadricFunc();           // an empty array going to be passed
someVariadricFunc('apple');    // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana');

如您所见,此令牌基本上将所有参数转换为数组,您可以按照您喜欢的任何方式处理该数组.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有