2009-07-27 8 views
4

私はかなり新しいPHPです。最初のオプションのパラメータの後にオプションのパラメータを設定するにはどうすればよいですか?例えば最初のオプションのパラメータの後にPHPでオプションのパラメータを設定するにはどうすればいいですか?

I次のコードを持っている:

function testParam($fruit, $veg='pota',$test='default test'){ 
echo '<br>$fruit = '.$fruit; 
echo '<br>$veg = '.$veg; 
echo '<br>Test = '.$test; 
} 

私は、次の呼び出しを行う場合は、次の

私は最後の例では、私は「POTAを表示するように電話をかける試してみたい
echo 'with all parama'; 
testParam('apple','carrot','some string'); 
//we get: 
//with all parama 
//$fruit = apple 
//$veg = carrot 
//Test = some string 

echo '<hr> missing veg'; 
testParam('apple','','something'); 
//we get: 
//missing veg 
//$fruit = apple 
//$veg = 
//Test = something 

echo '<hr> This wont work'; 
testParam('apple',,'i am set'); 

'をデフォルトの$ vegパラメータとして使用しますが、$ test' i am set 'に渡します。

$ vegに0を渡してコードに分岐して、$ veg = 0ならば 'pota'を使っても構いませんが、php.netで何か他の構文が見つかったら疑問に思っています。

答えて

7

デフォルトのパラメータだけでは、何もできません。デフォルトは欠落している引数にのみ適用され、最後の引数だけが欠落する可能性があります。

あなたは

$vega = $vega ? $vega : 'carrot'; 

のような行を追加し、

testParam('apple',false,'something'); 

またはキーとしてパラメータ名を持つ配列にパラメータを渡すのがより一般的な技術を使用して関数を呼び出すことができます。何かのように

function testparam($parms=false) { 
    $default_parms = array('fruit'=>'orange', 'vega'=>'peas', 'starch'=>'bread'); 
    $parms = array_merge($default_parms, (array) $parms); 
    echo '<br>fruit = $parms[fruit]'; 
    echo '<br>vega = $parms[vega]'; 
    echo '<br>starch = $parms[starch]'; 
} 

testparm('starch'=>'pancakes'); 
//we get: 
//fruit = orange 
//vega = peas 
//starch = pancakes 

これは少し冗長ですが、より柔軟です。既存の発信者を変更することなく、パラメータとデフォルトを追加できます。ちょうどそのようにNULLを渡し、任意のオプションパラメータのデフォルト値を使用するために今すぐ

function testParam($fruit, $veg='pota', $test='default test') { 

    /* Check for nulls */ 
    if (is_null($veg)) { $veg = 'pota'; } 
    if (is_null($test)) { $test = 'default test'; } 

    /* The rest of your code goes here */ 
} 

2

残念ながら、PHPで行うことはできません。

0またはnullなどの値を渡してから、値が0またはnullの場合は、デフォルト値に変更する必要があります。

Hereは、さらに詳しい情報が必要です。

0

これは私が使用する技術です。この例では

testParam('apple', null, 'some string'); 

$vegは、このコード例の欠点は、あなたが二回デフォルト値をコーディングする必要がある'pota'

に等しくなります。パラメータ宣言でデフォルト値をnullに簡単に設定できるので、デフォルト値を2回コーディングする必要はありませんが、IDEでパラメータヒントを与えてデフォルト値を即時に表示できるので、2回設定したい関数のシグネチャに追加します。

関連する問題