【问题标题】:Variable number of parameters in PHP [closed]PHP中可变数量的参数[关闭]
【发布时间】:2015-10-06 22:07:16
【问题描述】:

在将一些代码从 Java 转换为 PHP 的过程中,我遇到了以下 Java 代码:

void doSomething(String requiered, String... optionals) {...}

我知道可以使用func_get_args() 创建类似的函数签名,并且我知道我还可以在数组中传递未知的参数计数。但是,这两种方法对我来说都不是直截了当的,所以我想知道是否有更好的方法在 PHP 中使用可变数量的参数。

【问题讨论】:

  • @OfekRon - 并非总是如此,但与其问“如何转换它”,您或许应该从第二次编辑开始(减去称我为怪人)并告诉我们您在哪里寻找替代品? (也许它会收到更好的?)。
  • @Epodax 我认为这是一个太容易回答的问题而无法过度解释自己,但我想我错了......
  • @OfekRon 永远不要代表其他人做任何事情。其次,写一个好问题不仅有利于你得到一个正确/好的答案,而且未来可能会寻求相同信息的人也有好处。

标签: php


【解决方案1】:

PHP 5.6 引入了具有这种精确构造的能力。 来自 PHP 手册:

参数列表可能包含 ... 标记,以表示函数接受可变数量的参数。参数将作为数组传递给给定的变量

<?php
function sum($acc, ...$numbers) {
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list

【讨论】:

  • 但我还需要 1 个 arg 需要...也可以吗?
  • @OfekRon 是的,你可以有像method(Type $required, Type $required, ...$optionals)这样的签名
  • @OfekRon 但是,请注意这是 5.6 中引入的新结构。如果您希望您的代码与旧 PHP 版本兼容,则必须使用 func_get_args。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多