×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
PHP では引数を複数持つユーザー関数の定義は以下の様になります。
<?php // 一般的な引数が3個ある関数 function func1($P1, $P2, $P3) { // 引数を単に文字列化して連結 return "" . $P1 . $P2 . $P3; } echo "func1:" . func1("1", "22", "333"); // 表示結果 ⇒ func1:122333 ?>
関数自体は特に意味がある内容ではありませんが、引数を文字列として連結して返します。
ここでこの第2引数以降をデフォルト値を持つ様にします。 デフォルト設定は、引数の右側にイコール文字を置き、その後にデフォルト値を書きます。 (第2引数以降は全てデフォルト値を持つ必要があります。)
<?php // 2個の引数がデフォルト値がある関数 function func1($P1, $P2 = "AA", $P3 = "BBB") { // 引数を単に文字列化して連結 return "" . $P1 . $P2 . $P3; } echo "func1:" . func1("1"); // 表示結果 ⇒ func1:1AABBB ?>
結果表示をコメントで記していますが、デフォルト値が表示されるはずです。
もし、第2引数のみデフォルト値としたい場合に以下の様にしたのですが、PHPのエラーが発生しました。
<?php // 2個の引数がデフォルト値がある関数 function func1($P1, $P2 = "AA", $P3 = "BBB") { // 引数を単に文字列化して連結 return "" . $P1 . $P2 . $P3; } echo "func1:" . func1("1", , "CCC"); ?>
"func1:1AACCC"の表示を期待したのですが、以下のエラーが発生しました。 第2引数を省略する場合は、第3引数も省略が必要な様です。
Parse error: syntax error, unexpected ',' in ******/test-func.php on line 8
そこで第2、第3引数に NULL が指定された場合にはデフォルト値を設定する様にしてみました。 (これだと普通の関数になってしまいました)
<?php // 2個の引数がデフォルト値がある関数 function func1($P1, $P2 = "AA", $P3 = "BBB") { if (empty($P2)) { $P2 = "AA"; } if (empty($P3)) { $P3 = "BBB"; } // 引数を単に文字列化して連結 return "" . $P1 . $P2 . $P3; } echo "func1:" . func1("1") . "<br />"; echo "func1:" . func1("1", NULL, "CCC") . "<br />"; echo "func1:" . func1("1", "222") . "<br />"; // 表示結果 // func1:1AABBB // func1:1AACCC // func1:1222BBB ?>
PR
コメント