加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP变长参数?

发布时间:2020-12-13 13:03:42 所属栏目:PHP教程 来源:网络整理
导读:在 Python和其他语言中,可变长度参数列表有特殊的语法: def do_something(*args): # do somethingdo_something(1,2,3,4,5,...) # arbitrarily long list 我正在阅读PHP手册,它说: PHP 4 and above has support for variable-length argument lists in user
在 Python和其他语言中,可变长度参数列表有特殊的语法:
def do_something(*args):
    # do something

do_something(1,2,3,4,5,...) # arbitrarily long list

我正在阅读PHP手册,它说:

PHP 4 and above has support for
variable-length argument lists in
user-defined functions. This is really
quite easy,using the func_num_args(),
func_get_arg(),and func_get_args()
functions.

No special syntax is required,and
argument lists may still be explicitly
provided with function definitions and
will behave as normal.

我得到了第一部分.您可以将任意数量的参数传递给不带参数的函数,然后使用func_get_args()等将它们作为数组传递.但是,我并没有真正得到第二部分所说的内容.

所以,我的问题是,是否有一些特殊的可变长度参数语法,或者一些我不知道的最佳实践?手册建议的方法充其量只是kludgey并使你的功能似乎没有参数(除非我做错了).我根本不应该尝试使用这种语言功能吗?

与Python的*运算符或C#的params关键字不同,在PHP中,您甚至不必指定可变长度参数.第二部分开始时,“不需要特殊的语法.”

至于第二段的其余部分:如果要指定可变长度参数之前的任何必需或不相关的参数,请在函数签名中指定它们,以便函数可以处理这些参数.然后要获取可变长度参数,从func_get_args()中删除所需的变量,如下所示:

function func($required) {
    // Contains all arguments that come after $required
    // as they were present at call time
    $args = array_slice(func_get_args(),1);
}

您不必这样做(您仍然可以从func_get_args()切片并相应地使用其不同的元素),但它确实使您的代码更加自我记录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读