Code Fix

初級

文字列同士に + を使うと 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パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)