2012-03-06 13 views
0

今日私はいくつかのPHPを見ましたが、私は理解できません。私は理解していない何

function my_func($param='') 
{ 

    if (empty($param)) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

は空の文字列を割り当てられているの$のparam変数であるが、何とか関数内で空でありませんか?これは単なるデフォルト値ですか?

+3

PHP関数ドキュメントの後ろにオプションのparamsを置くことはできませんしていることができます:[デフォルト引数値](のhttp:/ /us2.php.net/manual/en/functions.arguments.php#functions.arguments.default) – Wiseguy

+0

[パラメータの数に制限のないPHP関数]の重複が可能です。(http://stackoverflow.com/questions/1577383/p hp-function-with-unlimited-number-of-parameters) –

+0

@Shiplu私は同意しません。その質問は少し違っており、デフォルトの引数値は参照されません。 – Wiseguy

答えて

2
my_func("string") //makes $param "string" 

my_func() //picks default making $param '' 

あなたは、必須およびオプションのparams

function my_func($param1, $param2='default') 

のようなあなたが必要なのparams

function my_func($param1='', $param2) //gives errors. 
1

はい、PHPのパラメータにデフォルト値を割り当てることができます。たとえば、my_func( "None Empty String")を使用して上書きすることができます。

1

あなたの前提は正しいです。これにより、開発者はパラメータにデフォルト値を割り当てることができます。

呼び出しコードがパラメータ値を渡さない場合、この関数はfalseを返します。それ以外の場合は、$paramは空ではなく、この関数はtrueを返します。

このコードで潜在的な落とし穴は、パラメータが空の値(0、nullなど)で渡された場合です。パラメータは渡されても、コードはfalseを返します。

1

はい、関数宣言の括弧内の変数はデフォルト値であり、そしてあなたは、このように関数を呼び出すことができるように使用されます。実際に関数に変数を渡すために必要とせずに

echo my_func(); 

すべて。

関連する問題