Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】implode()関数の使い方

implode関数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

implode関数は、配列の要素を一つの文字列に連結する関数です。この関数は、複数のデータが配列として格納されている場合に、それらのデータを特定の区切り文字(セパレータ)を挟んで結合し、単一の文字列として扱いたいときに非常に役立ちます。

この関数は、主に二つの引数を取ります。最初の引数には、配列の各要素の間に挿入する区切り文字を指定します。これは文字列である必要があります。二番目の引数には、連結したい要素を含む配列を指定します。PHP 8では、引数の順序は柔軟であり、区切り文字を先に指定しても、配列を先に指定しても動作しますが、可読性と一般的な慣習から、区切り文字、配列の順で指定することが推奨されます。

implode関数は、連結された結果の新しい文字列を返します。もし、連結対象として渡された配列が空の場合には、結果として空の文字列が返されます。また、配列の要素が文字列型でない場合でも、自動的に文字列型に変換されて連結処理が行われます。例えば、データベースから取得した複数のカテゴリ名をカンマで区切って表示したり、ログファイルを整形したりする際に頻繁に利用されます。シンプルながらも非常に汎用性の高い関数の一つです。

構文(syntax)

1<?php
2$array = ['apple', 'banana', 'cherry'];
3$separator = ', ';
4$result = implode($separator, $array);
5?>

引数(parameters)

string $separator, array $array

  • string $separator: 配列の要素を連結する際の区切り文字となる文字列
  • array $array: 連結する要素を含む配列

戻り値(return)

string

文字列の配列を、指定された区切り文字で連結した一つの文字列を返します。

サンプルコード

PHP implodeとexplodeで文字列と配列を変換する

1<?php
2
3/**
4 * PHPのimplode関数とexplode関数の基本的な使い方を示すサンプルコードです。
5 *
6 * implode関数は配列の要素を連結して一つの文字列を作成します。
7 * explode関数は文字列を特定の区切り文字で分割し、配列を作成します。
8 *
9 * システムエンジニアを目指す初心者の方でも理解しやすいように、具体的な例を通して説明します。
10 */
11
12// --- 1. explode関数を使って文字列を配列に変換する例 ---
13
14// カンマで区切られた文字列を定義します。
15$fruitString = "apple,banana,orange,grape";
16echo "元の文字列: " . $fruitString . PHP_EOL;
17
18// explode()関数は、第一引数に区切り文字、第二引数に対象の文字列を受け取ります。
19// この例では、カンマ(,)で文字列を分割し、それぞれの部分を配列の要素とします。
20$fruitArray = explode(",", $fruitString);
21
22echo "\n--- explodeの結果 ---" . PHP_EOL;
23echo "区切り文字 ',' で文字列を分割しました。" . PHP_EOL;
24echo "生成された配列: ";
25print_r($fruitArray); // 配列の内容を出力します。
26
27// --- 2. implode関数を使って配列を文字列に変換する例 ---
28
29// 上記で作成した配列を、今度は別の区切り文字で文字列に結合します。
30// implode()関数は、第一引数に新しい区切り文字、第二引数に対象の配列を受け取ります。
31// この例では、配列の各要素を ' | ' で結合します。
32$newSeparator = " | ";
33$combinedString = implode($newSeparator, $fruitArray);
34
35echo "\n--- implodeの結果 ---" . PHP_EOL;
36echo "区切り文字 '" . $newSeparator . "' で配列を結合しました。" . PHP_EOL;
37echo "生成された文字列: " . $combinedString . PHP_EOL;
38
39// --- 3. 別の例: スペース区切りの文章をハイフン区切りに変換 ---
40
41$sentence = "PHP is a popular general-purpose scripting language";
42echo "\n元の文章: " . $sentence . PHP_EOL;
43
44// まず、スペースで分割して単語の配列を作成します。
45$wordsArray = explode(" ", $sentence);
46echo "explodeで分割後(配列): ";
47print_r($wordsArray);
48
49// 次に、配列の要素をハイフン(-)で結合して新しい文字列を作成します。
50$hyphenatedSentence = implode("-", $wordsArray);
51echo "implodeでハイフン結合後(文字列): " . $hyphenatedSentence . PHP_EOL;
52
53?>

PHPのimplode関数とexplode関数は、文字列と配列という異なるデータ形式の間で変換を行うための基本的な関数です。これらの関数は、データを加工したり、特定の形式で出力したりする際に非常に役立ちます。

explode関数は、一つの文字列を特定の区切り文字で分割し、複数の要素を持つ配列に変換します。この関数は、第一引数に分割の基準となる区切り文字を文字列で、第二引数に対象となる元の文字列を指定します。実行すると、分割された各部分を要素とする配列が戻り値として返されます。例えば、「apple,banana」という文字列をカンマで分割すると、「apple」と「banana」という二つの要素を持つ配列が得られます。

一方、implode関数は、explode関数とは逆に、配列のすべての要素を連結して一つの文字列を作成します。この関数は、第一引数に配列の要素間を結合する際に使用する区切り文字を文字列で、第二引数に結合したい要素が含まれる配列を指定します。実行すると、指定された区切り文字で連結された新しい文字列が戻り値として返されます。例えば、["apple", "banana"]という配列をハイフンで結合すると、「apple-banana」という文字列が生成されます。

これらの関数を使うことで、例えばCSVファイルから読み込んだカンマ区切りのデータを配列として処理したり、逆に配列のデータを特定の区切り文字で整形してログに出力したりするなど、柔軟なデータ操作が可能になります。システム開発において、データの入出力処理で頻繁に利用される非常に重要な関数です。

implode関数は配列の要素を指定した区切り文字で結合して一つの文字列に、explode関数はその逆で文字列を指定した区切り文字で分割して配列に変換する対となる関数です。データ形式の相互変換に頻繁に利用されます。

最も重要な注意点は引数の順序と型です。implodeは第一引数に「区切り文字(文字列)」、第二引数に「結合したい配列」を指定します。一方、explodeは第一引数に「区切り文字(文字列)」、第二引数に「分割したい文字列」を指定します。引数の型や順序を間違えると、エラーや予期せぬ結果の原因となりますので、特に注意してください。

また、explode関数で区切り文字に空文字列を指定すると警告が発生するため、このような使い方は避けてください。空の配列や文字列をこれらの関数に渡した場合の戻り値の挙動も異なるため、実際のコードで利用する前に確認しておくことをお勧めします。

PHP implodeで配列を文字列に結合する

1<?php
2
3/**
4 * implode関数の基本的な使い方を示すサンプルコードです。
5 * 配列の要素を特定の文字列で結合し、一つの文字列を生成します。
6 *
7 * @param array<string> $items 結合したい文字列の配列
8 * @return void
9 */
10function demonstrateImplode(): void
11{
12    // 結合したい文字列の配列を定義します。
13    $fruits = ['apple', 'banana', 'orange'];
14
15    // implode関数を使用して、配列の要素をカンマとスペースで結合します。
16    // 第一引数に区切り文字(separator)、第二引数に結合対象の配列を指定します。
17    $combinedFruits = implode(', ', $fruits);
18
19    // 結果を出力します。
20    echo "結合された文字列: " . $combinedFruits . PHP_EOL; // 出力: 結合された文字列: apple, banana, orange
21
22    // 別の区切り文字(例: ハイフン)で結合する例
23    $words = ['Hello', 'World', 'PHP'];
24    $combinedWords = implode('-', $words);
25    echo "ハイフンで結合された文字列: " . $combinedWords . PHP_EOL; // 出力: ハイフンで結合された文字列: Hello-World-PHP
26
27    // 区切り文字が空文字列の場合
28    $letters = ['A', 'B', 'C'];
29    $combinedLetters = implode('', $letters);
30    echo "区切り文字なしで結合された文字列: " . $combinedLetters . PHP_EOL; // 出力: 区切り文字なしで結合された文字列: ABC
31}
32
33// 関数を実行します。
34demonstrateImplode();
35
36?>

PHPのimplode関数は、配列の要素を一つの文字列に結合するために使用される便利な関数です。この関数は、複数の文字列のピースを特定の区切り文字でつなぎ合わせたい場合に非常に役立ちます。

implode関数は主に二つの引数を取ります。一つ目はstring $separatorで、これは配列の各要素の間に入れる区切り文字(例: カンマ、スペース、ハイフンなど)を指定します。二つ目はarray $arrayで、結合したい文字列が格納されている配列そのものを指定します。関数はこれらの引数を受け取り、結合された新しいstring型の文字列を戻り値として返します。

サンプルコードでは、まず['apple', 'banana', 'orange']というフルーツの配列を定義しています。これをimplode(', ', $fruits)のように呼び出すことで、カンマとスペース, を区切り文字として、apple, banana, orangeという一つの文字列が生成されます。

次に、['Hello', 'World', 'PHP']という配列をハイフン-で結合し、Hello-World-PHPという文字列が得られる例を示しています。さらに、区切り文字に空文字列''を指定した場合、配列の要素が間に何も挟まずに直接連結される挙動も確認できます。例えば['A', 'B', 'C']ABCとなります。

このようにimplode関数は、配列の内容を整形して表示したり、ログファイルに書き出したりする際に非常に頻繁に用いられる基本的な関数です。

implode関数では、第一引数に区切り文字、第二引数に結合したい配列を指定する形式が推奨されますので、この順序を常に守りましょう。配列の各要素は自動的に文字列として扱われますが、オブジェクトなど直接文字列に変換できない値が含まれるとエラーになる場合があります。そのため、配列の要素が適切に文字列化できることを確認することが重要です。また、空の配列をimplode関数に渡すと空文字列が返されます。意図しない空文字列の生成を防ぐため、処理によっては事前に配列が空でないか確認することも安全です。配列の要素が一つだけの場合、区切り文字は付かず、その要素がそのまま文字列として返されます。

PHP implodeで多次元配列を文字列化する

1<?php
2
3/**
4 * PHPのimplode関数を多次元配列の処理に組み合わせて、
5 * 最終的に単一の文字列を生成するサンプルコードです。
6 *
7 * implode関数は1次元配列を結合するものであるため、
8 * 多次元配列を直接結合するのではなく、内部の配列を先に結合し、
9 * その結果をさらに結合するという一般的なパターンを示します。
10 *
11 * 例として、表形式のデータをCSVのような形式の文字列に変換します。
12 */
13function processMultidimensionalArrayWithImplode(): void
14{
15    // 多次元配列の例:ユーザーデータ(各内部配列が1行のデータに対応)
16    $userData = [
17        ['ID', '名前', 'メールアドレス'], // ヘッダー行
18        [1, '山田 太郎', 'taro.yamada@example.com'],
19        [2, '佐藤 花子', 'hanako.sato@example.com'],
20        [3, '田中 一郎', 'ichiro.tanaka@example.com']
21    ];
22
23    // 各行(内部配列)の要素を結合する際の区切り文字
24    $columnSeparator = ','; // 例: CSVの列区切り
25
26    // 結合された各行の文字列をさらに結合する際の区切り文字
27    $rowSeparator = "\n"; // 例: CSVの行区切り(改行)
28
29    $implodedRows = [];
30    foreach ($userData as $row) {
31        // 各1次元配列($row)を$columnSeparatorで結合し、文字列として$implodedRowsに追加
32        $implodedRows[] = implode($columnSeparator, $row);
33    }
34
35    // すべての結合済み行を$rowSeparatorで最終的に結合し、1つの文字列を生成
36    $finalCsvString = implode($rowSeparator, $implodedRows);
37
38    echo "--- 元の多次元配列 ---\n";
39    print_r($userData);
40
41    echo "\n--- implode関数を組み合わせて生成された文字列 ---\n";
42    echo $finalCsvString;
43    echo "\n";
44}
45
46// 関数の実行
47processMultidimensionalArrayWithImplode();

PHP 8で提供されるimplode関数は、配列の要素を特定の区切り文字で結合し、一つの文字列として返す機能を持つ関数です。第一引数string $separatorには文字列で区切り文字を指定し、第二引数array $arrayには結合したい配列を渡します。そして、戻り値として結合された一つの文字列が得られます。

このサンプルコードは、implode関数を多次元配列の処理に組み合わせて、最終的に単一の文字列を生成する方法を示しています。implode関数は1次元配列を対象とするため、多次元配列を直接結合することはできません。そこで、まず$userDataという多次元配列の各内部配列(各行のデータ)をforeachループで取り出し、implode関数を使ってカンマ,で結合し、各行の文字列を作成しています。これにより、例えば['ID', '名前', 'メールアドレス']"ID,名前,メールアドレス"のような文字列に変換されます。

次に、作成された複数の行文字列を格納した配列$implodedRowsを、再度implode関数で改行文字\nを区切り文字として結合します。これにより、多次元配列全体がCSV形式のような一つの大きな文字列$finalCsvStringとして整形されます。このように、implode関数を段階的に適用することで、複雑なデータ構造も効率的に望む形式の文字列に変換することが可能です。

PHPのimplode関数は、指定された区切り文字で1次元配列のみを結合し、単一の文字列として返します。サンプルコードのように多次元配列を処理したい場合は、直接implodeを使用することはできません。代わりに、foreachループなどで内部の1次元配列を個別にimplodeで結合し、その結果得られた文字列の配列をさらにimplodeで結合する「入れ子の処理」が基本的なアプローチとなります。

配列の要素が数値などの場合でもimplodeは自動的に文字列に変換して結合しますが、厳密なデータ型やフォーマットが必要な場合は、事前にstring型へキャストするか、sprintfなどで整形することを検討してください。また、空の配列をimplodeに渡すと、空の文字列が返される点も理解しておくと良いでしょう。

PHP implodeで連想配列を連結する

1<?php
2
3/**
4 * PHPのimplode関数を使って連想配列のキーと値を連結するサンプルコード。
5 *
6 * implode関数は、配列の要素を特定の文字列(区切り文字)で結合し、
7 * 一つの文字列として返します。
8 * 連想配列の場合、直接implodeを適用すると値のみが連結されます。
9 * この例では、まずキーと値を組み合わせて新しい配列を作成し、
10 * その配列をimplodeで連結する方法を示します。
11 *
12 * PHPの推奨コーディングスタイル (PSR-12など) に準拠しています。
13 */
14
15/**
16 * 連想配列のキーと値を結合し、さらにそれらを連結した文字列を生成する関数。
17 *
18 * @param array $associativeArray 連結したい連想配列。
19 * @param string $pairSeparator キーと値を区切る文字列 (例: ':')。
20 * @param string $elementSeparator 各要素の文字列を区切る文字列 (例: ', ')。
21 * @return string 結合された文字列。
22 */
23function createCombinedStringFromAssociativeArray(
24    array $associativeArray,
25    string $pairSeparator = ':',
26    string $elementSeparator = ', '
27): string {
28    // 連想配列の各要素を「キー + pairSeparator + 値」の形式の文字列に変換し、
29    // 新しい配列に格納します。
30    $formattedPairs = [];
31    foreach ($associativeArray as $key => $value) {
32        // キーと値を結合して新しい文字列を作成します。
33        // 値は文字列にキャストされるため、数値などでも問題なく連結できます。
34        $formattedPairs[] = "{$key}{$pairSeparator}{$value}";
35    }
36
37    // implode関数を使用して、作成した「キー:値」形式の文字列配列を
38    // 指定された要素区切り文字で連結し、最終的な文字列を生成します。
39    $combinedString = implode($elementSeparator, $formattedPairs);
40
41    return $combinedString;
42}
43
44// --------------------------------------------------------------------------
45// サンプル使用例
46// --------------------------------------------------------------------------
47
48// 連結したい連想配列を定義します。
49$userData = [
50    'id' => 101,
51    'name' => '田中 太郎',
52    'email' => 'taro.tanaka@example.com',
53    'role' => '管理者'
54];
55
56// 上で定義した関数を使って、連想配列を連結した文字列を生成します。
57// 各要素のペアは「:」で、要素同士は「, 」で区切られます。
58$combinedUserDataString = createCombinedStringFromAssociativeArray($userData, ':', ', ');
59
60// 生成された文字列を出力します。
61echo "連想配列を連結した文字列:\n";
62echo $combinedUserDataString . "\n";
63
64/*
65期待される出力例:
66連想配列を連結した文字列:
67id:101, name:田中 太郎, email:taro.tanaka@example.com, role:管理者
68*/
69
70// 別な区切り文字の例
71$productDetails = [
72    'sku' => 'PROD-001',
73    'price' => 1280,
74    'stock' => 50,
75    'status' => 'In Stock'
76];
77
78// ペアの区切り文字を「=」、要素の区切り文字を「 | 」に変更した例
79$combinedProductString = createCombinedStringFromAssociativeArray($productDetails, '=', ' | ');
80
81echo "\n別の区切り文字で連結した文字列:\n";
82echo $combinedProductString . "\n";
83
84/*
85期待される出力例:
86別の区切り文字で連結した文字列:
87sku=PROD-001 | price=1280 | stock=50 | status=In Stock
88*/

PHPのimplode関数は、配列の要素を特定の文字列(区切り文字)で結合し、一つの新しい文字列として返すための関数です。この関数は、第一引数に各要素の間に挿入する区切り文字(string $separator)を、第二引数に結合したい要素が含まれる配列(array $array)を取ります。戻り値は、すべての要素が結合されたstring型となります。

連想配列の場合、implode関数を直接適用すると、キーは無視され、値だけが結合されるという挙動をします。しかし、システム開発においては、連想配列のキーと値の両方を連結して一つの文字列として扱いたい場面も少なくありません。本サンプルコードは、そのようなニーズに応えるための具体的な方法を示しています。

サンプルコード内のcreateCombinedStringFromAssociativeArray関数では、まずforeachループを使用し、連想配列の各キーと値を、指定された「キーと値の区切り文字」で結合した新しい文字列の配列を作成しています。例えば、'id' => 101という要素は'id:101'のような文字列になります。次に、この新たに作成された文字列の配列をimplode関数に渡し、さらに指定された「要素同士の区切り文字」で連結することで、最終的な「キー:値」形式の結合文字列を生成しています。この処理により、連想配列の情報を分かりやすい一つの文字列として簡単に整形できるようになります。

implode関数は、配列の要素の「値」を特定の区切り文字で連結し、一つの文字列として返します。連想配列に直接implodeを適用すると、キーは無視され、値のみが連結されることに注意が必要です。連想配列のキーも連結したい場合は、サンプルコードのようにforeachループを使って「キーと値を組み合わせた文字列」を要素とする新しい配列を一旦生成し、その新しい配列に対してimplode関数を使用する方法が一般的です。連結する値が数値型などであっても、PHPは自動的に文字列として扱って結合します。この挙動が期待通りか確認し、意図しない型変換に注意してください。また、implodeに空の配列を渡すと、結果は空文字列となりますので、この点も考慮してコードを記述してください。

関連コンテンツ

関連プログラミング言語