ch06 8章中 6章目

ch06 — 文字列を配列に分割

スライドで見る

この章を AI と学ぶ

💬 AI に聞く質問例 3 件
  1. 「ch06 — 文字列を配列に分割」のつまずきやすいポイントを、初学者向けに3つ教えてください

    ChatGPT Claude Gemini

  2. 「ch06 — 文字列を配列に分割」について、自分の手で試せる練習問題を3つ出してください (難易度を上げながら)

    ChatGPT Claude Gemini

  3. 「ch06 — 文字列を配列に分割」を学んだ後、次に学ぶと良いトピックは何ですか?理由も教えてください

    ChatGPT Claude Gemini

概要

実際のプログラムでは、入力データが 1 つの長い文字列 として渡されることが多い。「CSV ファイルの 1 行」「URL のクエリパラメータ」「ユーザーが入力したカンマ区切りのタグ」など、ぜんぶ文字列のまま受け取って、これを 配列に分解 してからループで処理する。この「文字列 → 配列」の橋渡しを担うのが explode 関数だ。

explode($sep, $s) は「$s$sep で区切って配列にする」と読む。たとえば explode(",", "a,b,c")["a", "b", "c"] を返す。区切り文字は 1 文字でも複数文字でもよく、explode(" -> ", "x -> y -> z") のようにも書ける。区切り文字が文字列内に存在しない場合は、元の文字列がそのまま 1 要素の配列として返る (["a,b,c"] ではなく ["a,b,c"] — 元の文字列のみ)。

第 3 引数 limit を渡すと 分割数の上限 を制御できる。explode(",", "a,b,c,d", 2)["a", "b,c,d"] のように、最初の区切り文字までで分割を打ち止めにする。「最初のカンマまでをキーとして取り出したい」といった用途で重宝する。この章では分割した配列を for で走査するところまでやって、文字列処理と配列処理を地続きにつなぐ感覚を作る。

学習目標

  • explode($sep, $s) で文字列を区切り文字で分割し、配列にできる
  • カンマ区切り・スペース区切りの入力を扱える
  • 分割結果を for ループで処理できる

ドリル

no 内容
01 "a,b,c", で分割し、各要素を 1 行ずつ出力
02 スペース区切り入力を分割して、要素数を出力

解説スライド 全 7 枚

右の ボタン キー(またはスワイプ)で次のスライドに進めます。 下の「縦表示」を開くと全スライドを一気に読めます。

  1. 文字列を配列に分割する

    Lesson 4 / Chapter 6

  2. なぜ分割が要るのか

    CSV の 1 行:        "apple,banana,cherry"
    URL のクエリ:        "name=alice&age=30"
    ユーザー入力タグ:    "php css js"

    現実のデータは 1 本の文字列 で渡ってくることが多い。

    ループで処理するには、まず配列に分けてから扱う。

  3. explode($sep, $s) の基本

    <?php
    $csv = "apple,banana,cherry";
    $arr = explode(",", $csv);
    
    print_r($arr);

    実行結果:

    Array
    (
        [0] => apple
        [1] => banana
        [2] => cherry
    )
    • explode($sep, $s) = 「$s$sep で区切って配列にする」
    • 区切り文字 , は結果に含まれない
  4. 区切り文字は自由に選べる

    <?php
    // スペース区切り
    $tags = explode(" ", "php css js");
    // → ["php", "css", "js"]
    
    // 複数文字の区切り
    $path = explode(" -> ", "home -> products -> php");
    // → ["home", "products", "php"]
    • 半角スペース / タブ / , / - / : など何でも OK
    • 矢印 -> のような 複数文字 も区切り文字にできる
  5. 分割した配列を for で処理する

    <?php
    $csv = "apple,banana,cherry";
    $arr = explode(",", $csv);
    
    for ($i = 0; $i < count($arr); $i++) {
        echo ($i + 1) . ". " . $arr[$i] . "\n";
    }

    実行結果:

    1. apple
    2. banana
    3. cherry
    • 分割 → ループ で「文字列処理 + 配列処理」が地続きになる
  6. 第 3 引数で分割数を制限

    <?php
    // 最初のカンマでだけ分割 (= 2 要素に切る)
    $line = "name,alice,30,tokyo";
    $parts = explode(",", $line, 2);
    // → ["name", "alice,30,tokyo"]
    • explode($sep, $s, $limit)$limit分割数の上限 を指定
    • : の最初までを key にしたい」など、 1 つだけ切り出したいときに便利
  7. このチャプターでできるようになること

    explode($sep, $s) で文字列を区切り文字で分割できる ✅ カンマ・スペース・複数文字の区切りに対応できる ✅ 分割した配列を for で走査できる ✅ limit で分割数を制御できる

    → ドリルへ

1 / 7
📜 スライドを全部一気に読む(縦表示)

Lesson 4 / Chapter 6


なぜ分割が要るのか

CSV の 1 行:        "apple,banana,cherry"
URL のクエリ:        "name=alice&age=30"
ユーザー入力タグ:    "php css js"

現実のデータは 1 本の文字列 で渡ってくることが多い。

ループで処理するには、まず配列に分けてから扱う。


explode($sep, $s) の基本

<?php
$csv = "apple,banana,cherry";
$arr = explode(",", $csv);

print_r($arr);

実行結果:

Array
(
    [0] => apple
    [1] => banana
    [2] => cherry
)
  • explode($sep, $s) = 「$s$sep で区切って配列にする」
  • 区切り文字 , は結果に含まれない

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

<?php
// スペース区切り
$tags = explode(" ", "php css js");
// → ["php", "css", "js"]

// 複数文字の区切り
$path = explode(" -> ", "home -> products -> php");
// → ["home", "products", "php"]
  • 半角スペース / タブ / , / - / : など何でも OK
  • 矢印 -> のような 複数文字 も区切り文字にできる

分割した配列を for で処理する

<?php
$csv = "apple,banana,cherry";
$arr = explode(",", $csv);

for ($i = 0; $i < count($arr); $i++) {
    echo ($i + 1) . ". " . $arr[$i] . "\n";
}

実行結果:

1. apple
2. banana
3. cherry
  • 分割 → ループ で「文字列処理 + 配列処理」が地続きになる

第 3 引数で分割数を制限

<?php
// 最初のカンマでだけ分割 (= 2 要素に切る)
$line = "name,alice,30,tokyo";
$parts = explode(",", $line, 2);
// → ["name", "alice,30,tokyo"]
  • explode($sep, $s, $limit)$limit分割数の上限 を指定
  • : の最初までを key にしたい」など、 1 つだけ切り出したいときに便利

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

explode($sep, $s) で文字列を区切り文字で分割できる ✅ カンマ・スペース・複数文字の区切りに対応できる ✅ 分割した配列を for で走査できる ✅ limit で分割数を制御できる

→ ドリルへ

この章で取り組む 演習問題の流れ (2ステップ)
  1. 01 01-explode-csv starter.php answer.php
  2. 02 ドリル 02 — スペース区切りの要素数 README.md starter.php answer.php

演習問題の詳細

この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。

ドリル 02 — スペース区切りの要素数

問題

標準入力から 1 行を読み取り、スペース " " で分割した要素数を 1 行出力してください。

入力例:

3 14 15 92 6 5

期待される出力:

6

ヒント

  • $line = trim(fgets(STDIN));
  • $parts = explode(" ", $line);
  • echo count($parts) . "\n";

🧪 ブラウザで試す

スライドのコードを写経して ▶ 実行、自分で書いて 📝 採点 で答え合わせ。初回のみ PHP ランタイム読込で数秒かかります。

PHP ランタイム未読込

          

        

演習問題(2問)

  1. 01-explode-csv

    starter.php answer.php

  2. ドリル 02 — スペース区切りの要素数

    README.md starter.php answer.php

サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。

完了にすると進捗に反映されます