1

関数に渡されるすべての引数に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()およびその他の配列型関数は、トリミングされた引数が最初に定義されたアクションに使用できないため、理想的ではありません。ある種の配列を使用してから、元の引数を再アセンブルする必要がありますか?

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 に答える