前書き
PHPプログラミングでは、+演算子は数値の加算や配列の結合に使われる重要なツールです。
この記事では、+演算子の使い方とその振る舞いの違いについて紹介します。
サンプルコードはPHP Playground で実行できます。
数値の加算
PHPで最も一般的に+演算子が使われるのは数値の加算です。
基本的な使い方
|
|
|
|
この例では、2つの数値を加算しています。
文字列の加算
PHPでは、+演算子は文字列の結合には使用されません。数値の加算に特化しており、文字列に対して+演算子を使用すると、PHPは暗黙的に文字列を数値に変換して計算を行います。
以下解説をしていますが、基本的に文字列に対して+演算子を使う事は一般的ではないため混乱を招くことの方が多いです。
こういう動作をするんだなと理解するにとどめ使用は控えた方が無難です。
私自身結構な現場を経験してますが、まず使う事はないですし、使わないといけない場面もありませんでした。
文字列が数値の場合
もし文字列が数値として解釈可能な場合、+演算子はその数値として計算されます。
|
|
|
|
この例では、文字列 "5"
と "10"
がそれぞれ数値として認識され、加算された結果 15
が出力されます。
文字列が数値でない場合
一方、文字列が数値として解釈できない場合はPHPのバージョンによって動作が異なります。
PHP7以下の場合
PHP7以下の場合は文字列の先頭部分から数値を抽出しようとします。もし先頭に数値が含まれていなければ、0として扱われます。
|
|
|
|
この例では、どちらの文字列も数値として解釈できないため、PHPは両方を 0
として扱い、加算結果は 0
となります。また、実行時に下記警告が表示されます。
|
|
PHP8以上の場合
PHP8
からは下記エラーとなります。
|
|
文字列の連結にはドット演算子を使用する
文字列同士を連結(結合)したい場合は、+演算子ではなく ドット (.
) 演算子 を使用してください。
|
|
|
|
この例では、ドット演算子を使用して "Hello"
と "World"
の間にスペースを挟んで連結し、期待通りの文字列が出力されます。
配列の結合
PHPでは、+演算子を使用して2つの配列を結合することもできます。
ただし、この場合の動作は他の言語と異なる可能性があるため、注意が必要です。
配列の結合の例
|
|
|
|
この例では、2つの配列を結合しています。
重要なのは、同じキーを持つ要素は最初の配列のものが保持され、二番目の配列の要素は無視される点です。
注意点
- 数値加算では直感的ですが、配列の結合においては、重複するキーがある場合の振る舞いに注意が必要です。
- 配列の結合では、最初の配列のキーが優先されます。二番目の配列の同じキーの要素は無視されます。
- 文字列同士の数値加算は混乱を避けるためにも使用しないようにしましょう。
まとめ
PHPの+演算子は、数値加算と配列の結合の両方で利用できますが、特に配列の場合はその振る舞いを正しく理解しておくことが重要です。
これにより、予期せぬバグを避けることができます。