我个人使用下面的方法:
将参数声明为函数定义中的数组;
建立“默认值”assoc。阵列;
匹配将带默认参数传递给我在函数内部使用的确定参数assoc.array。为此,我使用param_default()函数。
通过遵循此方法,我避免了强制参数问题和管理默认值;以任何顺序传递密钥的能力也非常舒适。
// default values fx.
function param_default($def = array(), $parameters= array()){
$parm_diff = array();
$ak=array();
$va=array();
$parm = array();
foreach($def as $key=>$values) if(!in_array($key, array_keys($parameters))){
$ak[]=$key;
$va[]=$values;
}
$parm_diff = array_combine($ak,$va);
$parm = array_merge($parm_diff,$parameters);
unset($parm_diff, $ak,$va);
return $parm;
}
因此,这是使用一个简单的例子:
<?php
// sample use
function my_func($parameters = array()){
$def = array(
'first' => 1,
'second' => 'foo',
'third' => -1
);
$parm = param_default($def, $parameters);
//hereon I can use my array
var_dump($param);
if ($param['second'] !=='foo'){
echo 'Not foo!!';
// whatever...
}
return true;
}
?>
输出的实施例:
// calling my_fun()
$example = my_func(array('second'=>'bar'));
// results in
$param array:
'first' => 1,
'second' => 'bar',
'third' => -1
出于兴趣你可以发布你会写一个例子功能? :) – 2009-06-15 17:08:30
@沙迪 - 更像“出于病态的好奇心”? :) – 2009-06-15 17:20:51
所以不是 功能myFunc的($ VAR1,$ VAR2,$ VAR3,$ VAR4 ...){} 你必须 功能myFunc的($ params)方法{} ,然后通过参考$ params ['var1']等 – thekevinscott 2009-06-15 17:39:12