【问题标题】:Optional parameters in phpphp中的可选参数
【发布时间】:2012-10-06 20:14:50
【问题描述】:

我是 php 新手,并且有 java 和 C 的编码经验。所以可选参数对我来说有点混乱。我想知道如果一个函数有两个可选参数,如果我传递一个参数,哪个参数将映射到参数?

【问题讨论】:

    标签: php function parameters


    【解决方案1】:

    参数顺序永远不会改变(从左到右),所以如果你只提供一个参数,第一个参数将接收值,第二个参数将具有默认值。

    例如:

    function foo( $a = 1, $b = 2) {}
    
    foo();       // $a = 1, $b = 2
    foo( 3);     // $a = 3, $b = 2
    foo( 4, 5);  // $a = 4, $b = 5
    

    请注意,由于参数的顺序,无法设置$b 的值同时仍保留$a 的默认值。您必须像这样调用foo() 来完成此操作:

    foo( 1, 6);
    

    【讨论】:

      【解决方案2】:

      第一个参数总是传递给参数中的第一个变量,第二个传递给第二个,依此类推,无论它们是否可选。

      可选参数和非可选参数之间的唯一区别是,当调用中没有足够的参数来满足所有非可选参数时,会引发警告。

      function f($a = 1, $b, $c, $d = 2)
      {
        var_dump($a, $b, $c, $d);
      }
      f('x');
      

      函数内部$a 将为“x”,$b$c 将为 null 并且$d 将为 2 但会引发警告强>。

      因此,将可选参数留给非可选参数是没有意义的——尽管这在语法上是正确的——因为你永远不能在不生成警告的情况下将它们留在调用中。

      【讨论】:

      【解决方案3】:

      例如

      function test($test = null, $test_2 = null, $test_3 = null) {
      
      }
      
      test(1) => $test=1;
      test(1,1) => $test=1;$test_2=1;
      test(1,1,1) => $test=1;$test_2=1;$test_3=1;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-18
        • 1970-01-01
        • 2012-01-23
        • 2011-04-28
        相关资源
        最近更新 更多