PHPで文字列を結合する方法はいくつもあり、2つをつなぐのか、配列をまとめるのか、書式を整えるのかで使い分けると、コードが読みやすくなります。この記事では基本のピリオド連結から、implode・sprintf・ヒアドキュメントまで、用途別に解説します。
この記事の結論:2つの文字列は
.(ピリオド)で連結。変数を文章に埋め込むならダブルクオート内の変数展開。配列をまとめるなら implode()、書式を整えるなら sprintf() が便利です。ピリオド(.)で連結する
最も基本的なのがピリオド演算子です。既存の変数に追記するには .= を使います(ループ内での組み立てに便利)。
. と .=
<?php $first = "こんにちは"; $second = "世界"; echo $first . $second; // こんにちは世界 // .= で追記 $message = "これは"; $message .= "テスト"; $message .= "です。"; echo $message; // これはテストです。
ダブルクオート内の変数展開
ダブルクオート "..." の中では変数がそのまま展開されます。シングルクオート '...' では展開されません。変数名と後ろの文字を区切りたいときは波括弧 {} を使います。
変数展開と波括弧
<?php
$name = "太郎";
echo "こんにちは、$name!"; // こんにちは、太郎!
echo 'こんにちは、$name!'; // こんにちは、$name!(展開されない)
$fruit = "apple";
echo "これは {$fruit}s です"; // これは apples です({}で区切る)
配列をまとめて結合:implode
配列の要素を区切り文字でつなぐなら implode() が最適です。ピリオドで1つずつつなぐより簡潔で、CSV行の生成などに役立ちます。
implodeで配列を結合
<?php
$parts = ["2026", "06", "23"];
echo implode("-", $parts); // 2026-06-23
$items = ["りんご", "みかん", "ぶどう"];
echo implode("、", $items); // りんご、みかん、ぶどう
配列を文字列に変換する方法(implodeの詳細やネスト配列の扱い)は配列を文字列に変換する方法で詳しく解説しています。
書式を整えて結合:sprintf
「金額をカンマ区切りで」「ゼロ埋めして」など、書式を整えながら組み立てたい場合は sprintf() が読みやすくなります。プレースホルダ(%s・%d など)に値を埋め込みます。
sprintfで整形して結合
<?php
$name = "太郎";
$score = 95;
echo sprintf("%sさんの得点は%d点です", $name, $score);
// 太郎さんの得点は95点です
// ゼロ埋めや桁揃えもできる
echo sprintf("ID: %05d", 42); // ID: 00042
複数行をまとめる:ヒアドキュメント
HTMLメールやテンプレートのように複数行の文字列を組み立てるなら、ヒアドキュメント(<<<)が読みやすいです。ダブルクオートと同様に変数が展開されます(展開させたくない場合はNowdoc <<<'EOT')。
ヒアドキュメント
<?php
$name = "太郎";
$body = <<<EOT
{$name} 様
ご登録ありがとうございます。
今後ともよろしくお願いいたします。
EOT;
echo $body;
補足:数値の結合と注意点
ピリオドで数値をつなぐと、自動的に文字列に変換されて連結されます。なお、PHP 8では . より + の方が優先順位が高くなったため、計算と連結を混在させるときは括弧で明示すると安全です。
数値の結合
<?php echo "合計: " . (1 + 2); // 合計: 3(括弧で計算を明示) echo "番号" . 7; // 番号7(数値は自動で文字列化)
よくある質問(FAQ)
Q文字列の結合は + ではないのですか?
APHPでは結合はピリオド
. です。+ は数値の加算で、文字列に使うと数値変換が絡んで意図しない結果になります。連結には必ず .(追記は .=)を使ってください。Qシングルクオートとダブルクオートの違いは?
Aダブルクオート
"..." 内では変数が展開されますが、シングルクオート '...' 内では展開されず、そのまま表示されます。変数を埋め込みたいときはダブルクオート、リテラルな文字列ならシングルクオートが基本です。Q配列を1つの文字列にまとめたいです。
A
implode($区切り文字, $配列) を使います。implode("-", ["2026","06","23"]) で 2026-06-23 になります。Qループで文字列を組み立てると遅くなりますか?
APHPでは
.= での追記は実用上問題ありません。ただし要素が配列にあるなら、$arr[] = ... でためてからimplode() でまとめる方が、意図が明確で扱いやすいことが多いです。まとめ
PHPの文字列結合のポイントを整理します。
- 2つの連結は
.、追記は.=(+ではない) - 文章への埋め込みはダブルクオートの変数展開+
{}で区切る - 配列をまとめるなら
implode() - 書式を整えるなら
sprintf() - 複数行はヒアドキュメントが読みやすい
関連として、配列を文字列に変換する方法・文字列を指定回数くり返す方法・substrとmb_substrの使い方もあわせて読むと、PHPの文字列操作に強くなれます。
