1

将 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() 和其他数组类型函数并不理想,因为我们修剪的参数无法用于最初定义的进一步操作。我们是否需要使用某种数组然后重新组合原始参数?

4

3 回答 3

3

以下应该可以解决问题:

$args = array_map('trim', func_get_args());

编辑

可以做得更好(借用马克贝克)

list($a, $b, $c, $d, $e, $f) = array_map('trim', func_get_args());
于 2013-03-14T07:40:45.590 回答
2

一个好方法是像在您的代码中一样简单地执行此操作。这个“问题”的任何解决方案都是愚蠢的,因为最后你必须呼吁trim所有的论点。一种愚蠢但简短的做法是:

function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){
    foreach (range('a', 'f') as $v) {
        $$v = trim($$v);
    }
    // ...
}
于 2013-03-14T07:45:53.653 回答
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;
    ...
}
于 2013-03-14T07:39:07.987 回答