文字列を配列に分割する
テクノロジ系 / array-basic (添字配列・配列関数・explode/implode)
文字列を配列に分割する
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 で分割数を制御できる
→ ドリルへ
考えてみよう
既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。
ドリル 02 — スペース区切りの要素数
問題
標準入力から 1 行を読み取り、スペース " " で分割した要素数を 1 行出力してください。
入力例:
3 14 15 92 6 5
期待される出力:
6
採点
php scripts/grade.php topics/array-basic/ch06-string-to-array/drill/02-split-space/
ヒント
$line = trim(fgets(STDIN));$parts = explode(" ", $line);echo count($parts) . "\n";