【PHP8.x】join関数の使い方

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

作成日: 更新日:

基本的な使い方

join関数は、配列の要素を特定の文字列で結合し、一つの文字列を生成する関数です。この関数は、指定された配列のすべての要素を、指定された区切り文字で連結し、結果として一つの文字列として返します。これは、複数の文字列データから統一された形式の文字列を作成する際に非常に役立ちます。

利用する際には、2つの引数を指定します。第一引数には、配列の各要素間に挿入される区切り文字(separator)を文字列で指定します。例えば、カンマ「,」、スペース「 」、ハイフン「-」などです。第二引数には、結合したい文字列が格納された配列(array)を指定します。

正常に実行された場合は、すべての要素が区切り文字によって連結された一つの文字列が戻り値として返されます。もし指定された配列が空である場合、空文字列が返されます。引数に問題がある場合など、エラーが発生した際にはfalseが返されることがありますので、戻り値を確認することをお勧めします。

PHPにおけるjoin関数は、implode関数のエイリアス(別名)として提供されています。PHP 8を含む現在のバージョンでは、implode関数の使用が公式に推奨されており、join関数は主に古いバージョンとの互換性のために存在しています。新しいコードを書く際には、機能が明確で標準的なimplode関数を使用することが推奨されます。

構文(syntax)

1<?php
2$array = ['apple', 'banana', 'orange'];
3$result = join(', ', $array);
4echo $result;
5?>

引数(parameters)

array|string $separator, array $array

  • array|string $separator: 配列の要素を結合する際の区切り文字を指定します。文字列または空の配列を指定できます。
  • array $array: 結合する要素を含む配列を指定します。

戻り値(return)

string

指定された区切り文字で配列の要素を結合した文字列を返します。

サンプルコード

PHPで2つの配列を結合し文字列にする

1<?php
2
3/**
4 * 複数の配列の要素を結合し、指定された区切り文字で連結された単一の文字列を生成します。
5 * この関数は、最初に複数の配列を1つの配列にマージし、その後にjoin (implodeのエイリアス) を使用して
6 * 配列の要素を文字列に変換します。
7 *
8 * @param array $array1 結合する最初の配列。
9 * @param array $array2 結合する2番目の配列。
10 * @param string $separator 結合された要素の間に挿入する区切り文字。
11 * @return string 結合された配列要素を区切り文字で連結した文字列。
12 */
13function joinTwoArraysIntoString(array $array1, array $array2, string $separator = ', '): string
14{
15    // 2つの配列を1つの配列にマージします。
16    // array_mergeは、数値キーの場合は値を追加し、文字列キーの場合は上書きします。
17    // この用途では、要素のシーケンスが必要なので問題ありません。
18    $mergedArray = array_merge($array1, $array2);
19
20    // マージされた配列のすべての要素を指定された区切り文字で連結し、単一の文字列として返します。
21    // join() は implode() のエイリアスです。
22    return join($separator, $mergedArray);
23}
24
25// サンプルデータ
26$fruits1 = ['apple', 'banana', 'orange'];
27$fruits2 = ['grape', 'kiwi'];
28$vegetables = ['carrot', 'potato', 'onion'];
29
30// 2つの配列を結合して文字列を生成する例
31$combinedFruitsString = joinTwoArraysIntoString($fruits1, $fruits2, ', ');
32echo "Combined fruits: " . $combinedFruitsString . PHP_EOL;
33
34// 別の2つの配列を結合する例
35$allProduceString = joinTwoArraysIntoString($fruits1, $vegetables, ' / ');
36echo "Fruits and vegetables: " . $allProduceString . PHP_EOL;
37
38// 空の配列を含む例
39$emptyArray = [];
40$stringWithEmpty = joinTwoArraysIntoString($fruits1, $emptyArray, ' + ');
41echo "Fruits with empty: " . $stringWithEmpty . PHP_EOL;
42
43$stringFromEmptyArrays = joinTwoArraysIntoString([], [], ' - ');
44echo "Empty arrays: " . ($stringFromEmptyArrays === '' ? '(empty string)' : $stringFromEmptyArrays) . PHP_EOL;
45
46?>

このPHPのサンプルコードは、プログラミング初心者の方でも複数の配列の要素を効率的に結合し、単一の文字列として出力する方法を学ぶためのものです。特に、join関数(これはimplode関数のエイリアス、つまり別名です)の基本的な使い方と、複数の配列を扱う際の応用例を示しています。

コードの中心にあるjoinTwoArraysIntoString関数は、配列$array1$array2という二つの配列、そしてそれらの要素を連結する際に間に挿入する$separator(区切り文字)の三つを引数として受け取ります。関数が呼び出されると、まずarray_merge関数を使ってこれら二つの配列の要素を全て結合し、一つの大きな配列を作成します。これにより、異なる配列に散らばっていた要素が順序良くまとめられます。

次に、その結合された配列と$separatorjoin関数に渡します。join関数は、配列内のすべての要素を$separatorで区切りながら連結し、最終的に一つの長い文字列を生成して戻り値として返します。このプロセスにより、例えば複数のリストから得たデータを一覧として整形するなど、様々な場面で活用できます。

サンプルコードでは、果物や野菜の配列を使って、実際にどのように文字列が生成されるか、また空の配列が渡された場合の挙動も確認できます。この技術は、データの表示、ログの生成、外部システムとの連携など、実用的な開発において頻繁に用いられます。

このサンプルコードは、PHPで複数の配列要素を結合し、単一の文字列として出力する方法を示しています。ここで使用されているjoin関数は、implode関数のエイリアス(別名)であり、機能は完全に同じです。どちらを使っても構いませんが、一般的にはimplodeがより多く使われます。

join関数に配列を渡す際は、第一引数に区切り文字、第二引数に結合したい配列を指定する順序を守ってください。もし空の配列を渡した場合、joinは空の文字列を返します。

また、複数の配列を一つにまとめるために使われているarray_merge関数は、数値キーの要素は追加しますが、文字列キーが重複する要素は後から指定された配列の値で上書きされる特性があります。配列のキーの扱いに注意し、意図しないデータの上書きがないか確認してください。これらの関数は元の配列を直接変更せず、常に新しい文字列や配列を生成しますので、安全に利用できます。

joinとimplodeを比較して動作を理解する

1<?php
2
3/**
4 * join() と implode() の動作を比較するサンプルコードです。
5 * join() は implode() のエイリアス(別名)であり、全く同じ機能を提供します。
6 *
7 * @param array<string> $items 結合する文字列の配列
8 * @param string $separator 配列要素を区切るための文字列
9 * @return void
10 */
11function demonstrateJoinAndImplode(array $items, string $separator): void
12{
13    echo "元の配列: [" . implode(', ', $items) . "]" . PHP_EOL;
14    echo "セパレーター: '" . $separator . "'" . PHP_EOL . PHP_EOL;
15
16    // join() 関数を使用して配列の要素を文字列として結合します。
17    // 引数の順序は (セパレーター, 配列) が推奨されます。
18    $resultJoin = join($separator, $items);
19    echo "join() の結果: '" . $resultJoin . "'" . PHP_EOL;
20
21    // implode() 関数を使用して配列の要素を文字列として結合します。
22    // join() と全く同じ動作をします。
23    $resultImplode = implode($separator, $items);
24    echo "implode() の結果: '" . $resultImplode . "'" . PHP_EOL;
25
26    // 両関数の結果が同一であることを確認します。
27    if ($resultJoin === $resultImplode) {
28        echo PHP_EOL . "結果: join() と implode() は同じ文字列を返しました。" . PHP_EOL;
29    } else {
30        echo PHP_EOL . "結果: join() と implode() は異なる文字列を返しました。" . PHP_EOL;
31    }
32}
33
34// サンプルデータを定義
35$fruits = ['apple', 'banana', 'cherry'];
36$separator = ', ';
37
38// 関数を実行して join() と implode() の動作を実演
39demonstrateJoinAndImplode($fruits, $separator);
40
41?>

PHPのjoin()関数は、配列のすべての要素を結合し、一つの文字列として返すために使用されます。この関数は、配列の要素間に指定されたセパレーター(区切り文字)を挿入します。

引数には、まず配列要素を区切るための文字列である$separatorを指定し、次に結合したい要素を含む$arrayを渡します。戻り値として、指定されたセパレーターで区切られた結合済みの文字列が返されます。

特に重要な点として、join()関数はimplode()関数のエイリアス(別名)です。そのため、これら二つの関数は全く同じ機能と動作を提供します。サンプルコードでは、join()implode()の両方を使用して配列$fruitsの要素を結合しており、どちらも'apple, banana, cherry'という全く同じ結果を生成していることが確認できます。システム開発においては、どちらを使用しても問題ありませんが、implode()の方がより一般的に使われる傾向にあります。

join関数はimplode関数のエイリアス(別名)であり、両者は完全に同じ機能を提供します。どちらを使用しても動作に違いはありませんが、一般的にはimplodeの方が広く使われています。引数の順序は「区切り文字(セパレーター)」、次に「結合する配列」と指定するのが推奨されます。この順序であれば、配列が空の場合でも正しく空文字列が返されます。配列内の要素は全て文字列として結合されますので、数値などが含まれていても自動的に文字列に変換されます。意図しない型変換に注意し、安全にコードを利用してください。

関連コンテンツ

【PHP8.x】join関数の使い方 | いっしー@Webエンジニア