phpの文字列の連結の仕方を解説!


phpの文字列の連結の仕方を解説!

今回は、phpにおいてのphpの文字列を連結(文字列結合)する方法についていくつか解説をしていきます。

目次
  1. phpの文字列の連結の仕方
  2. 連結演算子
  3. 連結演算子 + 代入演算子
  4. 文字列の中の変数展開
  5. implode()
  6. 文字列の連結の速度を比較

phpの文字列の連結の仕方

phpにおいて、文字列を連結(文字列結合)する方法はいくつか存在します。 また、文字列を連結した結果をechoで表示したり、さらに他の変数と連結したりといろいろなことが可能なので、併せて解説いたします。

連結演算子

phpでは文字列を連結する際に、連結演算子 ( . ) というものを使用します。

例文

echo "私が飼っている犬の名前は"."BEN"

上記では、"私が飼っている犬の名前は"という文字列に対して、"BEN"という文字列を追加しています。結果として表示されるのは

"私が飼っている犬の名前はBEN"

です。

更に、連結演算子は複数使用することができます。

echo "私が飼っている犬の名前は"."BEN"."です。"

末尾に"です。"が追加されているのがわかりますね。

上記の結果として表示されるのは

"私が飼っている犬の名前はBENです。"

このようになります。

更に更に、連結演算子は変数と文字列、または変数同士を連結することも可能です。

$name = "BEN";
echo "私が飼っている犬の名前は".$name."です。"
$animal = "馬";
$name = "アナコンダ";
echo "私が飼っている".$animal."の名前は".$name."です。"

上記の結果は

"私が飼っている犬の名前はBENです。"
"私が飼っている馬の名前はアナコンダです。"

となります。

連結演算子 + 代入演算子

連結演算子は、代入演算子と組み合わせて使用することも可能です。

$name = "私の名前は";
$name .= "佳代子";
$name .= "です。";

echo $name;

上記の結果は

"私の名前は佳代子です。"

となります。

文字列の中の変数展開

ここまでで連結演算子を紹介しましたが、連結演算子を使用せずに、文字列の中に埋め込む方法も存在します。

例文はこちら

$name = "佳代子";
echo "私の名前は${name}です。"

上記の結果は

"私の名前は佳代子です。"

となります。これは、文字列の中に変数$nameを展開する方法で、文字列の中に${変数名}を入れることで、処理が実行される際に、$nameを文字列の中に埋め込むことができます。

複数の変数を埋め込むことも可能です。

$animal = "馬";
$name = "アナコンダ";
echo "私が飼っている${animal}の名前は${name}です。"

上記の結果も今まで同様

"私が飼っている馬の名前はアナコンダです。"

となります。

implode()

文字列の連結には配列を使用した方法もあります。 これは、結合したい文字列を配列として格納し、最後にimplode()を使用して連結する方法です。

配列として$arrを宣言し、中に連結したい文字列を追加していきます。

$name = "アナコンダ";
$arr = array();
$arr[] = "私が飼っている馬の名前は";
$arr[] = $name;
$arr[] = "です。";
echo implode($arr);

上記の結果は

"私が飼っている馬の名前はアナコンダです。"

となります。

implode()は、区切り文字を引数にすることができます。

$arr = array("犬", "猫", "鳥");
echo implode("、", $arr);

上記の結果は

"犬、猫、鳥"

となります。

Webサイト担当者としてのスキルが身に付く

無料カウンセリングはこちら

文字列の連結の速度を比較

続いて、文字列を連結する際にどの方法だと早いのか、逆にどれが遅いのかを検証してみました。

下記の方法で計測することが可能です。

<?php
$start = microtime(true);

// 計測する処理

echo microtime(true) - $start;

処理速度を計測する際にそれぞれ10,000回処理を行い、その実行速度を下の図で表しました。

1回目

image

2回目

image

3回目

image

私のPCの状態にもよるので一概には言えませんが、 代入演算子のみの場合と、文字列の中の変数展開が他に比べると早いように思います。

implode()は明らかに他よりも遅くなっていますね。

上記より、implode()や、連結演算子 + 代入演算子 を利用するよりは、 代入演算子のみか、文字列中の変数展開を利用すると、早いと思われます。


ベンジャミン吉澤
この記事を書いた人
ベンジャミン吉澤
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp