PHP:如何传递可能未定义的参数

时间:2013-07-10 16:29:49

标签: php parameters

我将参数传递给PHP中的函数。我不知道参数是否定义。 现在我检查参数是否已定义并在调用函数之前转换为null。 是否有一种更优雅的方式通过铸造或类似的方式来做到这一点?如果未定义参数,我希望使用函数默认值。

示例:

//Params['x'] may or may not be defined
// I want to use this:
a(params['x']);

//Currently I use this (which I want to avoid) :
a( isset (params['x'])?params['x']:null);


function a (data=null){
// Here I want data to be null  if params['x'] is not defined. 
}

3 个答案:

答案 0 :(得分:3)

如果您将此参数声明为参考:

function fun(&$param = null) {

}

请记住,如果传入的数组中没有它,它也会创建此条目,所以如果你有

$x = array('a' => 1);

您将致电fun($x['b']);$x将会显示为

$x = array('a' => 1, 'b' => null);

答案 1 :(得分:0)

对于您不确定存在的所有内容,必须有一个点来测试它和/或确保它存在。您可以使用isset / empty或使用确保值存在的操作来执行此操作,例如:

$params += array('x' => null);

您不应该设计函数来解决调用者可能没有的参数。如果函数需要参数,则让它需要参数period。您越早离开代码中的 may-or-may-not-there 模式,您就可以越快地要求并返回定义的值,从而减少您需要的代码量编写和调试。我的意思是唯一的不确定性应该是用户输入;尽可能早地将不确定的用户输入打入定义的形式,之后您的应用程序内部应该严格要求它所需要的和它返回的内容,而不是每个点都不确定。

答案 2 :(得分:0)

你已经完成了所有你需要做的事情。

使用这个函数原型,你会说,接受调用者传递的任何参数,或者如果没有传递则使用NULL。

function a ($data=null){
    if ( $data == null ) {
       // no parameter passed by caller
    }
}

忘记了函数调用中所有参数的烦恼。一切都为你完成。