在用户定义的函数中可以传递多少个参数?

时间:2013-08-16 15:02:13

标签: php parameters user-defined-functions named-parameters

我对编程比较陌生,已经在javascript中工作了很多,现在正在尝试学习php。标题基本上是这样说的。我可以在用户定义的函数中传递多少个参数?

我注意到标准函数倾向于接受不同的数字,所以我想知道是否可能在函数调用中传递无数个参数,只要该函数对每个函数执行某些操作。

例如:

调用该函数:

Myfunction(1,4,3,2,6)

被调用的函数:

function Myfunction(numOfApples, numOfBananas, numOfPears, numOfOranges, numOfRasberries){'do something with each of these values'}

我要求大致理解,我不是要做任何特定的事情,所以水果列表的事情只是传递代表不同事物的参数的一个例子。

2 个答案:

答案 0 :(得分:3)

我不相信您可以发送到函数的参数数量有限制。但是,在我看来,一旦你超过3或4,我倾向于发送像这样的数组或对象:

$send_values = array(
    'value1' = 1,
    'value2' = 3,
    'value3' = 2,
    'value4' = 5,
    'value5' = 1,
);

function Myfunction($input) {

}

这样您就不必担心要在变量中发送的确切顺序。再发送空值更容易。您只需使用isset($input['value2'])查看是否已发送值。但如果每个都设置为独立变量,则会出现此问题:

function Myfunction(value1,value2,value3=null,value4=null,value5=null) {

}

在这种情况下,需要发送value1和value2,但值3,4和5可以为null。因此,如果您只是发送前两个值,则可以执行此操作:

Myfunction(1,2);

但是假设您需要发送value1 value2和value5,现在您必须确保为value3和value4发送空值,以便使用数据而不是value3填充value5:

Myfunction(1,2,null,null,5);

在我看来,这可能会变成一个集群,可能会让人感到困惑。这是个人偏好,这个问题有一些很好的答案:How many parameters are too many?

答案 1 :(得分:1)

没有真正的限制。但是如果参数的数量开始堆积,你应该考虑制作一个对象来存储它们(假设它们是相关的,就像在你的例子中一样),并将对象作为参数传递。

传递一个对象或数组,可以在以后更容易地修改代码(而不是每次进行更改时都必须更新参数字段)。