【问题标题】:PHP: how to call a function with both fix arguments and a lot of comma-separated argumentsPHP:如何使用固定参数和大量逗号分隔参数调用函数
【发布时间】:2016-11-20 17:40:56
【问题描述】:

我需要这样调用一个函数:

function something($argument1, $argument2, $data)

其中 $data 可以是任意数量的以逗号分隔的变量: 1,2,3,4

所以例如我会打电话:

function something ('blue', 'green', 1,2,3)

function something ('red', 'black', 1,2,3,4,5,6,7,8,9)

我已经研究了省略号关键字 (...),但我看不出如何使用我的 2 个静态参数($argument1 和 $argument2)来实现它。

我的直觉是在调用函数并将数组发送给函数之前将逗号分隔成一个数组?

谢谢!

【问题讨论】:

  • 你当然可以交出一个“东西”数组作为第三个参数。或者您使用具有可变参数号的函数的方法。这确实允许使用任意数量的参数,因此您必须实现自己的方法来确保确实移交了这两个强制性参数。
  • 对于传递给函数的未知数量的参数,请使用数组。

标签: php function arguments


【解决方案1】:

我不知道你到底想做什么,但是,如果你想要一个有很多参数的函数,并且因为你知道前 2 个参数是固定的,你可以使用 php func_get_args() 来获取传递的参数到函数。

【讨论】:

    【解决方案2】:

    您可以在使用 splat 运算符之前包含必需的参数。 splat 运算符捕获的所有参数都将在数组中可用。例如,

    function splat_example($arg_1, $arg_2, ...$data_list) {
       echo $arg_1 . "\r\n";
       echo $arg_2 . "\r\n";
       foreach ($data_list as $data) {
           echo $data . "\r\n";
       }
    }
    

    那么下面,

    splat_example('red', 'blue', 1, 2, 3, 4); 
    

    会导致,

    red
    blue
    1
    2
    3
    4
    

    看到它在这里工作http://sandbox.onlinephpfunctions.com/code/36d991aeb4321faf8400d0f6fb017efc50ebe567

    【讨论】:

      【解决方案3】:

      您可以将第三个参数作为逗号分隔的字符串传递。 然后你可以使用带逗号的explode转换成数组。

      函数('blue', 'green', '1,2,3'){

      }

      【讨论】:

      • 在这种情况下最好只传递一个数组,将'1,2,3'替换为[1,2,3],使用explode()保存。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 2023-03-10
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多