我注意到在一些PHP内置函数(如str_replace)中有可选的输入变量。我可以在自己的函数中有可选的输入变量吗?如果是这样,怎么样?
谢谢, 布赖恩
答案 0 :(得分:8)
第一种方法是对某些参数使用默认值:
function doStuff($required, $optional = '', $optional2 = '') {
...
}
现在你只需要包含一个默认值,然后有人可以这样做:
doStuff('foo');
doStuff('foo', 1);
doStuff('foo', 2, 3);
如果未指定字段,则需要选择适当的默认值,或者表示未设置任何值。典型示例包括''
,0
,false
,null
或array()
。
或者您根本不需要使用func_get_args()
指定它们:
function doStuff() {
print_r(func_get_args());
}
func_get_args()
也可以与显式参数(第一个示例)一起使用。
答案 1 :(得分:1)
你可以做的另一个选择是......
编辑
现在有点有用的功能..
function getLongestString() {
$strings = func_get_args();
$longestString = '';
foreach($strings as $string) {
if (strlen($longestString) < strlen($string)) {
$longestString = (string) $string;
}
}
return $longestString;
}
然后您可以像这样使用
echo getLongestString('hello', 'awesome'); // awesome
虽然这可能不是你想要的,但是知道并解决可选功能输入的问题仍然是好的。
答案 2 :(得分:0)
允许任意排序参数的附加选项:
function my_function($arguments) {
if($arguments['argument1']) {
// do something
}
if($arguments['argument2'] == 'LOLCAT') {
// do something else
}
}
my_function(array('argument1' => 1, 'argument2' => 'LOLCAT'));