将php函数应用于所有函数参数

时间:2013-03-14 07:34:31

标签: php function arguments

将一个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 参数不能用于最初定义的进一步操作。我们是否需要使用某种数组然后重新组合原始参数?

3 个答案:

答案 0 :(得分:3)

以下应该可以解决问题:

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

修改

可以做得更好(借用Mark Ba​​ker)

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;
    ...
}