新しく質問する

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

役に立った:0件
  • 質問者:Tinte
  • 投稿日時:2008/12/09 19:34
  • 困り度:すぐに回答が欲しいです
  • 友達に紹介
  • ブログに書く
  • 教えて!gooお気に入り

 お世話になっております。

PHPのプログラミングで関数をつくる際に、引数を渡す関数と引数がない関数がありますが、すでに定義済みの関数のように、引数がある場合と引数がない場合の両方を取り扱うにはどうしたらよいでしょうか?

function example ($a) {
if ($a == 0 || $a == '') {
print '引数なし';
} else {
print $a;
}
}

のような関数で、
example();
という感じで引数を入れないと、
Warning: Missing argument …
というエラーがでてしまいます。関数を
example('');
と呼び出すと大丈夫なのですが。。。

プログラマーにとって基本的なことだと思うのですが、調べてもなかなか出てこないので質問させて頂きました。どなたかわかる方がいたらしたらおしえてください。
よろしくお願いします!
}

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:0件)
  • 参考になった:0件

No.3ベストアンサー20pt

  • 回答者:yambejp
  • 回答日時:2008/12/09 19:58

そのまえに・・・・
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;
}
?>

通報する

この回答へのお礼

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

  • 参考になった:0件

No.2ベストアンサー10pt

  • 回答者:mpx
  • 回答日時:2008/12/09 19:51

以下のように関数を定義しておけば
function example ($a=NULL) {

example(); として実行すれば $a=NULLが関数内でデフォルトで使われます
example(5); として実行すれば$a=5になります

通報する

この回答へのお礼

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

  • 参考になった:0件

http://www.talkphp.com/general/1789-optional-par …

とかいうのがあったけどどう?

通報する

  
このQ&Aは役に立ちましたか?(役に立った:0件)

このページのトップへ

Facebook公式ページ

公式Twitter