【PHP】implode()で配列を文字列に結合。基本から注意点まで丁寧に解説

PHPで配列を扱っていると、複数の要素をひとつの文字列にまとめたい場面がよくあります。
例えば、
・ユーザーが入力した複数のキーワードをカンマ区切りで表示したいとき、
・データベースに保存する前に配列を一本の文字列に変換したいとき、
・CSVデータを生成したいとき
など、配列→文字列の変換は日常的な処理のひとつです。
そんなときにわざわざforeachでループを回していると、コードが長くなりがちで可読性も大きく下がってしまいます。
そこで便利なのが、PHPのimplode()関数です。
この記事では、PHP初心者でもすぐに使える「配列を文字列に結合する方法」を、実装例を交えながら丁寧に解説していきます。
implode()とは?基本の使い方
implode()は、配列の要素を指定した区切り文字でつなげて、ひとつの文字列にして返すPHPの関数です。
基本的な書き方はこちらです。
implode(string $separator, array $array): string
第1引数に区切り文字(セパレータ)、第2引数に連結したい配列を渡します。
実際にコードを書いてみると、このような感じで使います。
<?php
$data = ["data01", "data02", "data03", "data04", "data05"];
$result = implode("/", $data);
echo $result;
?>
出力結果はこちらです。
data01/data02/data03/data04/data05
たった1行で、配列の要素をスラッシュでつないだ文字列が得られます。
foreachでループを回す必要がなく、コードもシンプルに書けるのがimplode()の魅力です。
詳細は公式マニュアル(PHP: implode – Manual)も確認すると安心です。
【重要】PHP8での引数順序の変更について
古いPHPコードをお使いの方は必ずご確認ください。
- 以前は
implode($array, $glue)のように引数を逆順で書いても動作していました。 - しかし、PHP 7.4.0 で非推奨となり、PHP 8.0.0 以降では完全に削除されています。
- PHP 8 環境で逆順に書くと
Fatal errorが発生してサイトが止まります。
<?php
// NG:PHP8では Fatal error になります
echo implode($data, "/");
// OK:正しい書き方
echo implode("/", $data);
?>
ちなみに、WordPressをお使いの場合、PHPのバージョンアップ時にこの変更が影響することがあります。
古いコードが残っている場合は、早めに修正しておきましょう。
区切り文字をいろいろ変えてみよう
implode()関数では、区切り文字はどんな文字列でも指定できます。
いくつか例を見てみましょう。
<?php
$items = ["りんご", "バナナ", "みかん"];
// カンマ区切り
echo implode(",", $items);
// 出力:りんご,バナナ,みかん
// 「・」区切り
echo implode("・", $items);
// 出力:りんご・バナナ・みかん
// 区切り文字なし(空文字)
echo implode("", $items);
// 出力:りんごバナナみかん
?>
なお、第1引数(区切り文字)は省略することも可能です。
ただ、その場合は空文字として処理されます。
よくある実装例
実際の開発でよく使われる場面を紹介します。
カンマ区切りでCSVライクな文字列を作る
<?php
$fields = ["name", "email", "phone"];
$csv_header = implode(", ", $fields);
echo $csv_header;
// 出力:name, email, phone
?>
CSVファイルのヘッダー行やデータ行を作成する際によく使われます。
SQLのIN句を動的に生成する
<?php
$ids = [1, 6, 12, 18, 24];
$id_str = implode(", ", $ids);
$sql = "SELECT name, email FROM users WHERE user_id IN ($id_str)";
echo $sql;
// 出力:SELECT name, email FROM users WHERE user_id IN (1, 6, 12, 18, 24)
?>
注意:ユーザーの入力値をそのままSQLに埋め込むのはSQLインジェクションの危険があります。実際の開発ではプレースホルダやPDOを使った安全な処理を行いましょう。
連想配列にも使える
連想配列の場合、implode()は値のみを結合し、キーは無視されます。
<?php
$user = [
"name" => "田中",
"hobby" => "テニス",
"age" => "28",
];
$result = implode(", ", $user);
echo $result;
// 出力:田中, テニス, 28
?>
お問い合わせフォームのチェックボックス処理
複数選択できるチェックボックスの値をデータベースに保存したいときにも役立ちます。
<?php
// チェックボックスから送られてきた配列
$selected = ["メルマガ希望", "資料請求", "電話相談希望"];
$saved_value = implode("、", $selected);
echo $saved_value;
// 出力:メルマガ希望、資料請求、電話相談希望
?>
このような感じで、implode()は様々な場面で活用することができます。
implode()を使うときの注意点
implode()を使用する場合の注意点をまとめておきます。
もう一度チェックしておきましょう。
- PHP8では引数の順序が固定されている
第1引数に区切り文字、第2引数に配列の順番のみ有効です。逆順はエラーになります。 - 配列以外を渡すとエラーになる
implode()は配列専用の関数です。文字列や数値を直接渡すとエラーが発生します。 - 多次元配列には対応していない
配列の中にさらに配列が入っている多次元配列には使えません。 - 空の配列を渡すと空文字列が返る
要素が0件の配列を渡した場合、エラーにはならず空文字列("")が返ります。
配列かどうか不安な場合は、is_array()で確認してから処理するとより安全です。
<?php
$data = "data01"; // 配列ではなく文字列の場合
if (is_array($data)) {
$result = implode("/", $data);
echo $result;
} else {
echo "配列ではありません";
}
?>
join()との違いは?
PHPにはjoin()という関数もありますが、これはimplode()のエイリアス(別名)です。
動作はまったく同じで、どちらを使っても結果は変わりません。
<?php
$items = ["a", "b", "c"];
echo implode("-", $items); // 出力:a-b-c
echo join("-", $items); // 出力:a-b-c(同じ結果)
?>
どちらを使っても問題ありませんが、公式マニュアルではimplode()が正式名称として扱われているため、チームで統一する場合はimplode()を使う方が無難です。
逆の操作はexplode()で
implode()とは逆に、文字列を区切り文字で分割して配列に変換するのがexplode()関数です。
<?php
$str = "りんご,バナナ,みかん";
$array = explode(",", $str);
print_r($array);
// 出力:Array ( [0] => りんご [1] => バナナ [2] => みかん )
?>
implode()で結合 → explode()で分割、という流れはセットで覚えておくと便利です。
まとめ
今回は、PHPユーザー向けに、配列を文字列に結合するimplode()関数の使い方を紹介しました。
- 配列を文字列にまとめるなら
implode()関数が一番シンプル - PHP8以降は引数の順序が「区切り文字→配列」に固定されており、逆順はエラーになる
- 連想配列にも使えるが、結合されるのは値のみ(キーは無視)
join()はimplode()のエイリアスで、動作は同じ- 逆の操作(文字列→配列)には
explode()を使う
implode()関数を使いこなすことで、配列処理のコードがぐっとスッキリします。
配列操作をさらに深く学びたい方は、PHPの配列関数一覧もチェックしてみましょう。






















