文字列同士に + を使うと TypeError になる(. との違い)
PHPの文字列連結演算子は . (ピリオド)です。+は数値の加算専用で、数値として解釈できない文字列に対して使うとTypeErrorになります。
エラーメッセージの読み方
Fatal error: Uncaught TypeError: Unsupported operand types: string + string in main.php:4
main.php- ファイル名
4- 行番号 — 実際にクラッシュした行
TypeError- 例外クラス — 何が起きたか。ここを検索するのが最短です
Unsupported operand types: string + string- 内容 — どの値が問題だったか
このエラーが出る典型パターン
パターン1
1 <?php 2 $greeting = "Hello"; 3 $name = "world"; 4 echo $greeting + $name; ^
Fatal error: Uncaught TypeError: Unsupported operand types: string + string in main.php:4
PHPの+は数値の加算専用です。文字列同士を連結したい場合は . を使う必要があります。
直し方: + を . にします。
広告
広告スロット(未設定)
パターン2
1 <?php 2 $first = "foo"; 3 $second = "bar"; 4 echo $first + $second; ^
Fatal error: Uncaught TypeError: Unsupported operand types: string + string in main.php:4
文字列同士に+を使うとTypeErrorになります。連結には.を使います。
直し方: + を . にします。
パターン3
1 <?php 2 $label = "Price: "; 3 $unit = "yen"; 4 echo $label + $unit; ^
Fatal error: Uncaught TypeError: Unsupported operand types: string + string in main.php:4
labelとunitはどちらも数値に変換できない文字列です。+を使うとTypeErrorになるため.で連結します。
直し方: + を . にします。
よくある誤解
JavaScriptなど他言語の経験から「+は文字列も連結できるはず」と思い込むと、PHPでは通用しません。PHPの+は常に数値演算で、文字列を連結したいなら.を使う必要があります。
まとめ
文字列同士に + を使うと TypeError になる(. との違い)は初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。