PHPを実行すると「Missing argument 2 for function」のエラーに遭遇することがあります。
プログラムによっては「…3 for function」「…4 for function」など数字が異なることがありますが、エラー原因はいずれも同じです。
この記事ではPHPで「Missing argument X for function」のエラーが発生する原因と対処法を解説します。
「Missing argument 2 for function」の原因
Missing argument 2 for functionは、引数が2つ以上ある関数の引数を省略した際に発生するエラーです。
<?php
function add($a,$b){
return $a+$b;
}
echo add(10);
?>
上記プログラムのadd関数は引数が2つありますが、add関数呼び出し時には引数を一つしか指定されておらず、二番目の引数$bには値が何も入っていない状態になり、「Missing argument 2 for function」が発生します。
引数が多すぎた場合、不要な引数が無視されてエラーにはなりません。
上記サンプルのadd関数をadd(10,20,30)
として呼び出した場合、add(10,20)
として処理されます。
関数によって引数の数が決まっているので、関数呼び出し時には引数の数を間違えないようにしましょう。
「Missing argument 2 for function」の回避方法
このエラーは関数宣言行で、引数に対して初期値を設定しておくことで回避できます。
<?php
function add($a,$b = 100){
return $a+$b;
}
//110が出力されます
echo add(10);
?>
関数内の最初で初期化するのではなく、引数を指定しているところでの初期化が必要なので注意しましょう。
【おまけ】PHPリファレンスの見方
PHP標準ライブラリに含まれている関数も引数を省略できる関数がたくさんあります。
例えばPHP.net公式で関数を調べると、
print_r ( mixed $value , bool $return = false ) : string|bool
と説明されていることがありますが、代入式になっている引数は省略可能という意味になっています。
例えば上記のprint_r関数は2番目の引数を省略して実行した場合、変数$returnはfalseとして扱われます。
引数の初期化のことを知っていると、リファレンスなどの関数の説明が見やすくなるので覚えておくといいでしょう。
