• ベストアンサー

引数のある関数と引数のない関数の設定

 お世話になっております。 PHPのプログラミングで関数をつくる際に、引数を渡す関数と引数がない関数がありますが、すでに定義済みの関数のように、引数がある場合と引数がない場合の両方を取り扱うにはどうしたらよいでしょうか? function example ($a) { if ($a == 0 || $a == '') { print '引数なし'; } else { print $a; } } のような関数で、 example(); という感じで引数を入れないと、 Warning: Missing argument … というエラーがでてしまいます。関数を example(''); と呼び出すと大丈夫なのですが。。。 プログラマーにとって基本的なことだと思うのですが、調べてもなかなか出てこないので質問させて頂きました。どなたかわかる方がいたらしたらおしえてください。 よろしくお願いします! }

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

そのまえに・・・・ if($a == 0 || $a == ''){} という条件式はいただけません。 if($a == ''){} で十分です。そうではない場合引数に文字列をあたえると $a == 0にヒットします。もしくは厳密にやるなら if($a === 0 || $a === ''){} としてください。 それを踏まえて、引数に初期値を与えると省略が可能です。 <? example(); example(0); example("hoge"); function example($a=0){ if ($a=='') print '引数なし'; else print $a; } ?>

Tinte
質問者

お礼

詳しい解説あいがとうございます。 ===と初期値の設定だったのですね。むかし勉強したことを思い出しました。。 ありがとうございます!

その他の回答 (2)

  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

以下のように関数を定義しておけば function example ($a=NULL) { example(); として実行すれば $a=NULLが関数内でデフォルトで使われます example(5); として実行すれば$a=5になります

Tinte
質問者

お礼

ありがとうございます! この場合は、初期値はNULLでもいいんですね。。。。

回答No.1