将一个php函数(如trim())应用于传递给函数的所有参数,同时保持它们有用于进一步处理的好方法是什么?假设我们想要修剪传递给邮件函数的所有参数:
function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){
$a = trim($a);
$b = trim($b);
$c = trim($c);
$d = trim($d);
$e = trim($e);
$f = trim($f);
// !!! i'd like something other than n lines of trim()...
// do further functioning on original *now trimmed* arguments...
my_function($to,$subject,$body,$from,$cc,$bcc);
func_get_args()和其他数组类型函数并不理想,因为我们的 trimmed 参数不能用于最初定义的进一步操作。我们是否需要使用某种数组然后重新组合原始参数?
答案 0 :(得分:3)
以下应该可以解决问题:
$args = array_map('trim', func_get_args());
修改强>
可以做得更好(借用Mark Baker)
list($a, $b, $c, $d, $e, $f) = array_map('trim', func_get_args());
答案 1 :(得分:2)
一个好方法就是在代码中简单地执行此操作。对这个“问题”的任何解决方案都是愚蠢的,因为最终你有为所有参数调用trim
。一个愚蠢而又简短的方法是:
function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){
foreach (range('a', 'f') as $v) {
$$v = trim($$v);
}
// ...
}
答案 2 :(得分:1)
func_get_args()和array_walk()也许?
function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL)
$argArray = func_get_args();
array_walk($argArray,'trim');
list($a, $b, $c, $d, $e, $f) $argArray;
...
}