【问题标题】:How can I pass non-consecutive parameters to a function? [duplicate]如何将不连续的参数传递给函数? [复制]
【发布时间】:2017-06-29 09:32:26
【问题描述】:
function foo($x="", $y="", $z=""){
    echo $x .'-'. $y .'-'. $z;
}
foo('hello', $z='world');
> hello-world-

我想打印'hello--world'。我是否需要指定 x 和 z 之间的所有参数才能完成此操作?

【问题讨论】:

  • 只有最右边的函数参数可以省略。替代方法是更改​​函数以接受数组。
  • 是的,你必须这样做
  • 在我看来这将是一个很好的功能支持:(
  • 使用参数数组?
  • “命名参数”已在 PHP 内部小组讨论过几次,但从未被接受

标签: php parameters arguments parameter-passing


【解决方案1】:

是的,你必须在你的函数中指定所有参数(参数)(除了最后一个!)如果它像你的例子那样写。

另一种方法是将数组作为参数传递,但如果方法/函数是从 URL 调用的,这将不起作用。

您不能像示例中那样指定调用时要传递的参数:

foo('hello', $z='world');

您只在示例中传递了第二个参数。

您必须对函数进行以下任一调用:

foo('hello', 'world');
foo('hello', '', 'world');

【讨论】:

    【解决方案2】:

    我还建议你另一个别名:

    function foo($x="", $y="", $z=""){
        return $x .'-'. $y .'-'. $z;
    }
    
    function fooXZ($x="", $z=""){
        return foo($x, "", $z);
    }
    
    echo fooXZ('hello', 'world');
    
    > hello-world-
    

    这是因为如果您不需要参数,.. .也许这意味着您需要另一个函数。

    【讨论】:

    • 如果方法可以像 Java 中一样共享相同的名称,那就更好了
    • 我喜欢 php。我讨厌在 php =(
    猜你喜欢
    • 2020-02-21
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 2019-03-05
    • 2019-03-17
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    相关资源
    最近更新 更多