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
コメント