是否可以将变量传递给函数而不传递函数定义中的变量?
例如,如果我的函数如下所示:
function doThis( $v1, $v2, $v3 )
{
echo $v1.$v2.$v3;
}
然后我可以只使用其中一些变量调用该函数,例如doThis("v1",null,"v3")
或其他方式吗?
答案 0 :(得分:2)
您可以使用预定义的参数:
function doThis( $v1, $v2 = "hello", $v3 = 1 ) {}
仅使用第一个参数调用此函数,第二个和第三个将为“hello”,1为defualt:
doThis(10);
答案 1 :(得分:2)
+1
您也可以使用数组..
$array['var1'] = null;
$array['var2'] = "foo";
$array['var3'] = "bar";
doThis($array);
function doThis($theArray){
var_dump($theArray);
}
这样,您可以使用空值和N amout变量。
答案 2 :(得分:1)
您可以在函数定义中指定默认值,如下所示:
function doThis($a, $b=null, $c=null) {
echo $a . $b . $c;
}
doThis("hello", " world"); // yields: hello world
在此函数中,$ a是必需参数。其他两个值是可选的。
为了安抚下面的评论者,你当然可以像这样调用这个函数:
doThis("hello", null, "world");
当然,你没有有提供默认值(但这样做是个好主意)
答案 3 :(得分:1)
是的,如果您准备函数来处理doThis("v1",null,"v3")
参数,则可以执行null
。
例如,您的示例可以正常工作。
或者,如果有意义,您可以更改参数的顺序,以便设置默认值。
答案 4 :(得分:1)
答案是:重新设计您的工作流程。
我知道你不喜欢这个答案,但老实说,如果你传递的参数超过3个,或者有时候你不想传递部分开始参数,你可能想重新考虑你在做什么。函数和方法调用应该很简单。你的功能可能太多了。
一般提示:
$var=null
,您就可以直接传递它们。然后,在使用它之前检查是否$var===null
。答案 5 :(得分:0)
更清晰的方式是传递一系列变量,如@jflaflamme所示。
另一种方法是允许任意数量的变量,如:
function foo()
{
$arguments = func_get_args();
if(sizeof($arguments))
{
echo implode('', $arguments);
}
}
foo(1, 2, 3, $some_var);
你也可以循环通过func_get_args
获得的数组,检查它们的类型(如果它是null,数组,对象 - 你命名它),然后以你认为合适的方式处理它们。 / p>