PHPで文字列を連結する方法|連結演算子「.」と「.=」の使い方を解説
PHPには、算術演算、文字列の連結、値の比較、論理演算など、さまざまな処理を行うための演算子が多数用意されています。本記事では、その中でも文字列を扱うための文字列演算子について、具体例を交えながらわかりやすく解説します。
PHPの文字列演算子の種類
PHPで提供されている文字列演算子は、次の2つです。
1. 連結演算子(「.」)
左辺と右辺の2つの文字列を結合し、新しい文字列として返します。
2. 複合代入演算子(「.=」)
右側の文字列を左側の変数に追記する形で連結します。
それでは、実際のコード例でそれぞれの演算子の動きを確認していきましょう。
連結演算子(.)の基本例
<?php $a = 'Good'; $b = 'Morning'; $c = $a.$b; echo "$c"; ?>
出力結果:
Goodmorning
解説:
変数$aと$bにそれぞれ文字列を代入し、連結演算子(.)を使って2つの文字列を1つに結合しています。最もシンプルでよく使われる連結方法です。
複合代入演算子(.=)の使用例
<?php
$a = 'Hello';
$b = [' Good morning', ' Folks'];
for ($i = count($b) - 1; $i >= 0; $i--) {
$a .= $b[$i];
}
echo $a;
?>
出力結果:
Hello Folks Good morning
解説:
この例では、複合代入演算子(.=)を使って、文字列と配列の要素を連結しています。$aは文字列、$bは配列であり、forループで配列の末尾から順に$aへ追記していくことで、1つの文字列にまとめています。
注意:演算子の優先順位による落とし穴
連結演算子(.)は、加算演算子(+)や減算演算子(-)と同じ優先順位を持っているため、書き方によっては予期しない結果を招くことがあります。
問題のあるコード例:
<?php $val = 5; echo "Result: " . $val + 5; ?>
出力結果(PHP 7の場合):
5
解説:
このコードは「Result: 10」と出力することを期待しますが、PHP 7では「5」と表示されます。連結演算子と加算演算子が同じ優先順位で左から右へ評価されるため、まず「Result: 5」という文字列が生成され、次にそれへ5を加算しようとします。数値以外の文字列は0として扱われるため、0 + 5 = 5 という結果になってしまうのです。
解決策:括弧で優先順位を明示する
<?php $var = 5; echo "Result: " . ($var + 5); ?>
出力結果:
Result: 10
補足: PHP 8以降では、連結演算子(.)の優先順位が加減算演算子より低く変更されたため、括弧がなくても「Result: 10」と出力されます。ただし、可読性とバージョン間の互換性を保つため、括弧を明示的に付けることが推奨されます。
まとめ
- 連結演算子(
.):2つの文字列を結合して新しい文字列を作る - 複合代入演算子(
.=):既存の変数に文字列を追記する - 演算子の優先順位に注意し、必要に応じて括弧を使う
文字列の連結はPHP開発における基本操作のひとつです。2つの演算子の違いを正しく理解し、状況に応じて使い分けられるようにしておきましょう。
-
C++で2つの文字列をマージして最大の文字列を作成する方法
2つの文字列「a」と「b」、および結果を格納するための文字列「merge」が与えられているとします。この課題は、次のルールに従って「a」と「b」から1文字ずつ取り出し、「merge」を埋めていくことです。 文字列「a」が空でない場合、「a」の先頭の1文字を取り除き、その文字を「merge」に追加します。 文字列「b」が空でない場合、「b」の先頭の1文字を取り除き、その文字を「merge」に追加します。 両方の文字列が空でない場合は、それぞれの残りの文字列を辞書順に比較し、より大きい方の先頭文字を「merge」へ移します。たとえば「a」が「b」より大きい場合は、先に「a」から文字を取り出します
-
C++で2つの2進数文字列を加算するプログラムの書き方
2つの2進数を表す文字列が与えられたとき、それらを加算した結果を求め、その結果を2進数の文字列として返すことを考えます。2進数とは、0か1のいずれかで表現される数値のことです。2進数同士を足し合わせる際には、以下のような2進数特有の加算ルールに従う必要があります。0+0 → 0 0+1 → 1 1+0 → 1 1+1 → 0(繰り上がり1)入力例str1 = {11}, str2 = {1}出力例100入力例str1 = {110}, str2 = {1}出力例111問題を解くためのアプローチ両方の文字列を末尾(最下位桁)から走査する対応する桁の2進数同士を加算する1と1を足した場合は、その桁