概要
実際のプログラムでは、入力データが 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 | スペース区切り入力を分割して、要素数を出力 |
📝 演習: ドリル 02 — スペース区切りの要素数
問題
標準入力から 1 行を読み取り、スペース " " で分割した要素数を 1 行出力してください。
入力例:
3 14 15 92 6 5
期待される出力:
6ヒント
$line = trim(fgets(STDIN));$parts = explode(" ", $line);echo count($parts) . "\n";