# ch07 — 配列を文字列に連結

Source: https://php-school.pages.dev/topics/array-basic/ch07-array-to-string/
Site: AIと学ぶPHPの学校 (https://php-school.pages.dev)
Lesson: 配列の基本
Level: L2

Reference (official): https://www.php.net/manual/ja/language.types.array.php

## 本文

# ch07 — 配列を文字列に連結

## 概要

前章で覚えた `explode` で文字列を配列に分解できるようになったら、次に必要になるのは **その逆向き**。集計結果やループで作った配列を、画面に表示したりファイルに書き出したりするために **1 本の文字列に戻す** 操作だ。これを担うのが `implode` 関数。

`implode($glue, $arr)` は「`$arr` の要素を `$glue` でつなぐ」と読む。`implode(",", ["a", "b", "c"])` なら `"a,b,c"` を返す。第 1 引数の `$glue` は要素と要素の **間に入る文字列** で、要素数より 1 つ少ない回数だけ挿入される。区切り文字は 1 文字でも、`" -> "` や `"\n"` (改行) のような複数文字でも自由に指定できる。

ここでハマりやすいのが **引数の順序**。`explode` は `($区切り, $文字列)` の順で受け取り、`implode` は `($区切り, $配列)` の順。両方とも「区切り文字が第 1 引数」で揃っているのだが、頭の中で「配列が主役だから配列が先かな」と感じて逆に書いてしまうミスがとても多い。ちなみに `implode` には `join` という別名があり、機能はまったく同じ。読むときはどちらに出会っても慌てないように。

## 学習目標

- `implode($glue, $arr)` で配列を区切り文字でつないだ文字列にできる
- `explode` と逆向きの操作 (配列 → 文字列) であると理解する
- 任意の区切り文字 (カンマ・矢印・改行など) で連結できる

## 所要時間

スライド 4 分 + ドリル 2 問 = **13 分**

## ドリル

| no | 内容 |
|---|---|
| 01 | 整数配列を `","` で連結して出力 |
| 02 | 文字列配列を `" -> "` で連結して出力 |

## 採点

```bash
php scripts/grade.php topics/array-basic/ch07-array-to-string/drill/01-implode-comma/
```

## 関連チャプター

- [`ch06-string-to-array`](../ch06-string-to-array/) — 逆方向 (文字列 → 配列) の `explode`
- [`ch01-create-array`](../ch01-create-array/) — 連結する配列を作る
- [`ch08-array-manipulation`](../ch08-array-manipulation/) — 連結する前に配列を加工する

## スライド

---
marp: true
theme: dojo
paginate: true
size: 16:9
---

<!--
LLM_CONTEXT:
  Lesson 4 / Chapter 7
  目的: implode($glue, $arr) で配列を区切り文字でつないだ 1 つの文字列にできる
  扱わない: 操作系 (ch08) / sprintf や複雑なフォーマット
  読み上げ時間目安: 3 分半〜4 分
-->

# 配列を文字列に連結

Lesson 4 / Chapter 7

---

## ch06 の逆向き操作

```
explode:  "a,b,c"  →  ["a", "b", "c"]
implode:  ["a", "b", "c"]  →  "a,b,c"
```

- `explode` は **分割** (文字列 → 配列)
- `implode` は **結合** (配列 → 文字列)
- セットで覚える

---

## `implode($glue, $arr)` の基本

```php
<?php
$nums = [10, 20, 30];
$s = implode(",", $nums);

echo $s . "\n";   // 10,20,30
```

- 第 1 引数: 区切り文字 (glue)
- 第 2 引数: 配列
- 配列の要素を区切り文字でつないだ文字列が返る

---

## 区切り文字は自由に選べる

```php
<?php
$path = ["home", "user", "docs"];

echo implode("/", $path) . "\n";   // home/user/docs
echo implode(" - ", $path) . "\n"; // home - user - docs
echo implode("\n", $path) . "\n";  // home\nuser\ndocs (改行区切り)
```

- 1 文字でも複数文字でも OK
- 改行文字 `"\n"` を使えば 1 行ずつ出力するのにも使える

---

## ループとの組み合わせ

```php
<?php
$squares = [];
for ($i = 1; $i <= 5; $i++) {
    $squares[] = $i * $i;
}

echo implode(",", $squares) . "\n";   // 1,4,9,16,25
```

- ループで配列を組み立てる → `implode` で 1 行にまとめる
- これは **競技プログラミングや CSV 出力で頻出** のパターン

---

## このチャプターでできるようになること

✅ `implode(",", $arr)` でカンマ区切りに変換できる
✅ 任意の区切り文字を選べる
✅ `explode` の逆操作だと説明できる
✅ ループで作った配列をまとめて 1 行に出せる

→ ドリルへ
