我正在编写一个带有可选参数的php函数,似乎无法使其工作。
function myFunc($param,$optional){
$var = $optional || [];
}
逻辑是,如果使用$optional
参数调用它,$var
设置$optional
的值,如果留空$var
设置为新数组{{1} }}。我虽然得到了一个未定义的变量[]
。
问题:为什么我不能在我的函数中声明一个可选的参数?
答案 0 :(得分:3)
您必须在函数参数中声明一个可选参数。它不起作用,因为你必须告诉PHP解释器期望一个参数。
function myFunc($param, $optional = null){
// ...
}
在PHP 7+中,您可以使用扩展运算符进行参数解包以表示可选参数。这比向函数发送参数数组要好。
function myFunc($param, ...$optional){
print_r($optional);
}
myFunc('baz'); // Array ( )
myFunc('baz', 'foo', 'foobar', 'whoo'); // Array ( [0] => foo [1] => foobar [2] => whoo )
答案 1 :(得分:1)
你可以使用这样的东西:
function myFunc($param, $optional = '') {
$var = $optional;
if ($var == '') {
$var = [];
}
}
//without parameter
myFunc('abc');
//with parameter
myFunc('abc', 'optional param');
通用示例:
function myFunc($param, $optional1 = '', $optional2 = []) {
通常会尝试将所有可选参数保留在最后