PHPで配列を扱う際に、データ操作などの過程で、各要素の値を1つの文字列にまとめる必要が出てくる場合があります。
その際に活用できるのが、implode関数です。
今回の記事では、implode関数の使用方法について、詳しく解説していきたいと思います。
PHPのimplode関数とは?
implode関数は、配列内の要素を1つの値にまとめる関数です。
引数に指定した区切り文字を各要素の間に挟んだ上で、1つの文字列として返します。
例えば、CSV形式のデータ生成やAPIレスポンスの整形など、文字列形式でデータを扱いたい場合に活用することができます。
機能がシンプルなため、初心者でも簡単に扱える関数の1つでもあります。
implode関数の使い方
さっそく、implode関数の詳しい使い方について見ていきましょう。
基本構文
まずは、implode関数の基本構文から解説していきます。
implode関数を使用する際は、以下の形式でコードを記述します。
【基本構文】
implode( 区切り文字, 対象配列 )
第1引数には、要素ごとの間に入れる区切り文字を指定します。
区切り文字は省略可能で、指定しなかった場合は空文字が適用されます。
第2引数には、対象とする配列を指定します。
指定の配列内にある全ての要素が、1つの文字列として結合されます。
既出の通り、関数の戻り値は文字列です。
それぞれの引数の指定内容を元に、要素の値を結合した文字列を戻り値として返します。
指定した配列の中身が空だった場合には、空文字が返されます。
以下のサンプルコードで、実際の動きを見てみましょう。
【サンプルコード】
<?php
$fruitsArray = ['apple', 'orange', 'banana'];
$result = implode(',', $fruitsArray);
echo $result;
?>
【実行結果】
apple,orange,banana
このように、指定した文字で区切られた文字列が生成されます。
implode関数の引数の順序を変更する
通常、関数の引数は指定する順番が定められていますが、PHP 8.0 以前の implode関数の場合は、区切り文字と配列の指定を前後させることができます。
以下のサンプルコードを見てみましょう。
【サンプルコード】
<?php
$fruitsArray = ['apple', 'orange', 'banana'];
$result = implode($fruitsArray, ',');
echo $result;
?>
【実行結果】
apple,orange,banana
先ほどのサンプルコードの一部を変更し、引数の順番を前後させていますが、実行結果は同じものとなっています。
ただし上述の通り、この仕様は PHP 8.0 以前までのもので、それ以降のバージョンの場合はエラーとなります。
また、思わぬミスを発生させる原因にもなりかねないため、基本的には活用しないようにすることをおすすめします。
implode関数で多次元配列を指定した場合の動作
ここまでは、一次元の配列に対して implode関数を使用してきましたが、多次元配列に使用した場合の動作はどうなるのでしょうか?
以下のサンプルコードで、実際に動作を確認してみましょう。
【サンプルコード】
<?php
$fruitsArray = [['apple', 'orange'], ['grape', 'banana']];
$result = implode(',', $fruitsArray);
echo $result;
?>
【実行結果】
PHP Warning: Array to string conversion in /tmp/main.php on line 5
上記のコードを実行すると、このようなエラーが表示されるかと思います。
結果を見ると分かるように、多次元配列はそのまま implode関数で使用することはできません。
多次元配列の要素を、 implode関数を使用して結合する場合は、ループ処理で入れ子となっている配列を前処理するなどして対応する必要があります。
【サンプルコード】
<?php
$fruitsArray = [['apple', 'orange'], ['grape', 'banana']];
$rows = [];
// 入れ子状態の配列ごとに要素を結合
foreach ($fruitsArray as $row) {
$rows[] = implode(',', $row);
}
// 生成した全ての文字列を結合
$result = implode(',', $rows);
echo $result;
?>
【実行結果】
apple,orange,grape,banana
或いは、implode関数と array_map関数を組み合わせて使用する手もあります。
【サンプルコード】
<?php
$fruitsArray = [['apple', 'orange'], ['grape', 'banana']];
$result = implode(',', array_map(function($row) {
return implode(',', $row);
}, $fruitsArray));
echo $result; // 出力: apple,orange,grape,banana
?>
array_map関数を使用する場合はこのように、implode関数の第2引数に指定します。
連想配列にimplode関数を適用した場合の動作
implode関数では、多次元配列をそのまま扱うことはできないことと先ほど解説しました。
では、連想配列の場合はどのような動作になるのでしょうか?
こちらも、サンプルコードで実際の動きを見てみましょう。
【サンプルコード】
<?php
$fruitsArray = [
'apple'=>10,
'orange'=>20,
'grape'=>30,
'banana'=>40
];
$result = implode(',', $fruitsArray);
echo $result;
?>
【実行結果】
10,20,30,40
一次元配列の時と同じように、要素の値が1つに結合されましたね。
連想配列の場合は、事前処理などを行う必要はなく、そのまま implode関数で使用することができます。
ただし、結果を見ると分かるように、結合されるのは値のみでキーは対象外となるため、注意が必要です。
まとめ
いかがでしたか?今回は、implode関数の使い方について解説しました。
CSVなどのデータを操作する際にも活用できる関数ですので、覚えておくと便利です。
また、implode関数とよく合わせて活用されるものに、explode関数があります。
implode関数の対となるような関数なので、こちらも合わせて覚えておくとより便利です。
PHPの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、PHPに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!

ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。