2012-03-22 3 views
1

最初の引数がデフォルト値のNULLになるように、関数呼び出しで値を与えずに最初の引数をスキップできますか?オプションのパラメータを渡さずにdefaultに設定する方法はありますか?

function test($a = NULL, $b = true){ 
    if($a == NULL){ 
    if($b == true){ 
     echo 'a = NULL, b = true'; 
    } 
    else{ 
     echo ' a = NULL, b = false'; 
    } 
    } 
    else{ 
    if($b == true){ 
     echo 'a != NULL, b = true'; 
    } 
    else{ 
     echo ' a!=NULL, b = false'; 
     } 
    } 
} 

test();  //ok 
test(NULL); //ok 
test(5);  //ok 
test(5,false) //ok 
test(,false); // How to skip first argument without passing any value? ->PARSE error 

// i don' want to use default value for first argument, although test(NULL,false) 
// or test('',false) will work but can i skip first argument somehow? 
// i want to pass only second argument, so that first arg will be default set by 
// function 
+0

あなたが持っている要件は、PHP標準の変更が必要です:) –

答えて

3

あなただけのPHPで引数をスキップすることはできません。

Perlのトリックを考えて、関連する配列を使用することをお勧めします。パラメータをデフォルトとマージするには、array_mergeを使用します。

function Test($parameters = null) 
{ 
    $defaults = array('color' => 'red', 'otherparm' => 5); 
    if ($parameters == null) 
    { 
     $parameters = $defaults; 
    } 
    else 
    { 
     $parameters = array_merge($defaults, $parameters); 
    } 
} 

は、あなたはフォーマットが私のPHP関数基準

test("",false); 

あなたはjQueryのライブラリと作品を持っている要件を定義し使用する必要があり、この

Test(array('otherparm' => 7)); 
0

あなたは、引数の位置を変更したり、exmapleのために、配列として引数を渡すことができます。

test($options); 
+0

私はしたくない、私は2番目の引数を設定したい –

+0

私は最後にあなたのコメントを読んでいない... – ventsislaf

-1

のような関数を呼び出します...その関数を渡す引数 ではなく、PHP

+0

何実際の@#$?この答えは間違いありません! – m93a

0

function test($b = true,$a = NULL){ 
//logic here 
} 

としてあなたの機能をRedifineそして、あなたはテスト(5)のようにそれを呼び出すことができます。第2のパラメータを避ける。

+0

2つの引数のためのクールが、私は5つのオプション引数の3番目の引数をスキップしたい場合は? –

+0

の場合、NULLまたは0などのデフォルト値を渡す必要があります。 – heyanshukla

関連する問題