2013-03-14 57 views
0

对传递给函数的所有参数应用php函数(如trim())的好方法,同时保留它们以便进一步处理?假设我们要修剪传递给邮件功能的所有参数:将php函数应用于所有函数参数

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()等数组类型功能是不理想的,因为我们的修剪参数是采取进一步行动无法与最初定义。我们是否需要使用某种数组然后重新组合原始参数?

+0

可能使用get_defined_vars() – 2013-03-14 07:40:35

回答

2

的一个好方法是只需在代码中进行即可。对于这个“问题”的任何解决方案都是愚蠢的,因为最后你的对所有的参数调用trim。一个愚蠢的,但简单地说,这样做将是这样:

function my_function($a, $b, $c = NULL, $d, $e = NULL, $f = NULL){ 
    foreach (range('a', 'f') as $v) { 
     $$v = trim($$v); 
    } 
    // ... 
} 
+0

我的解决方案,因为它优雅地处理NULL! – Ragamffn 2013-03-14 19:19:10

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

+1的'list'想法来解决。谢谢 – 2013-03-14 07:59:41

3

下应该做的伎俩:

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

编辑

能做得更好(借用过马克·贝克)

list($a, $b, $c, $d, $e, $f) = array_map('trim', func_get_args()); 
+0

是的,但我们原来的论点仍然没有修正。我们可以'列出'重新组合原始的*现在修剪*参数,但潜在的NULL值保持未定义并抛出错误... – Ragamffn 2013-03-14 07:58:38