PHP ERROR
PHP Too few arguments to function の原因と解決法
関数を呼び出すときに、定義で必須とされている引数の数より少ない数しか渡していないと発生するエラーです。
このエラーメッセージ
PHP Fatal error: Uncaught ArgumentCountError: Too few arguments to function greet(), 1 passed and exactly 2 expected
原因
- 関数定義より少ない数の引数で呼び出している
- 引数の追加後、既存の呼び出し箇所を直し忘れている
- 省略したい引数にデフォルト値を設定していない
❌ エラーになるコード
NG
<?php
function greet($name, $message) {
echo $name . "さん、" . $message;
}
greet("太郎"); // 引数が1つ足りない
✅ 修正したコード
OK
<?php
function greet($name, $message = "こんにちは") {
echo $name . "さん、" . $message;
}
greet("太郎");
echo "\n";
greet("花子", "おはようございます");
▶ 修正済みコードを実行エディタで開く
progoのPHP実行環境(インストール不要・登録不要)でその場で動作を確認できます。
解決のポイント
省略可能にしたい引数にはデフォルト値($message = "こんにちは")を設定します。デフォルト値のある引数は引数リストの後ろ側に置くのがルールです。すべて必須のままにするなら、呼び出し側で必要な数の引数を渡してください。
よくある質問
引数を多く渡しすぎた場合もエラーになる?
通常の関数では余分な引数は無視されエラーになりません。ただしタイプヒント付きの組み込み関数などでは挙動が異なる場合があります。
特定の引数だけ指定して呼び出せる?
PHP 8.0以降なら名前付き引数greet(name: "太郎")が使えます。順番を気にせず指定できます。