PHPでカンマ区切りの値を配列データに変換する方法を現役エンジニアが解説【初心者向け】
初心者向けにPHPでカンマ区切りの値を配列データに変換する方法について現役エンジニアが解説しています。カンマなどで区切られたデータを配列にするにはexplode関数を使います。explode関数とは、文字列などを引数で指定した区切り文字で分割して配列に変換する関数です。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
監修してくれたメンター
井上 祐介
今回は、PHPでカンマ区切りの値を配列データに変換する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
PHPでカンマ区切りのCSVファイルを読み込んだままでは、単なる長い文字列で扱いづらいですが、配列に変換するとプログラム中で扱いやすくなります。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
PHPでカンマで区切られた文字を配列で扱いたいんですが、どうしたらいいですか?
PHPには区切られた文字列を配列に変換するexplodeという便利な関数があるよ。
区切り文字を指定して、配列に変えてくれるんだ。
そんな便利な関数があるんですね。
カンマ区切りの文字列を配列にするにはexplode関数が使えるけど、カンマ区切りがファイルになったCSVを読み込むときはfgetcsv関数を使うんだ。
同じカンマ区切りでも使う関数が違うんですね。
そうなんだ。では、さっそくカンマ区切りの文字列を配列にする方法を解説するね。
お願いします!
この記事は、カンマ区切りの値を配列データに変換する関数 explodeの使用方法などを解説した記事です。
まだPHPでの開発に慣れていない方でも理解できる内容となっております。
※カンマ区切りはCSVファイルで使われていますが、CSVファイルからの読み込みにはfgetcsv関数を使います。詳しくは解説記事「簡単に変換できる!PHPでCSVファイルを読み込む方法【初心者向け】現役エンジニアが解説」をご覧ください。
カンマ区切りを配列に変換(explode関数)
explode関数とは
PHPのexplode関数は、区切られた文字列を配列に変換する関数です。
区切り文字は指定ができるのでカンマ(,)の他、空白やアンパサンド(&)、セミコロン(;)など自由に指定できます。
書式
分割された文字列の配列 = explode(区切り文字, 区切られた文字列)
第1引数には、入力する文字を分割する区切り文字を渡します。
第2引数には、区切り文字で区切られた文字列を渡します。
分割した文字列は、配列となって返却されます。
※省略できるオプションとして第3引数に変換後の配列の要素数の最大値を渡すことができます。分割されなかった要素については、最後の配列にすべて格納されます。
※explode関数とは逆に、配列をカンマ区切りに変換するにはimplode関数を使います。implode関数について、詳しくは解説記事「PHPでimplodeを使う方法【初心者向け】」をご覧ください。
サンプルコード
カンマで区切られた文字列を配列に変換するサンプルコードです。
ソースコード
<?php
// カンマ区切りの文字列
$str_csv = "アップル,オレンジ,レモン,グレープ,メロン";
// カンマ区切りのデータを配列にする
$fruits = explode(",", $str_csv);
// 変換された配列を表示
print_r($fruits);
?>
実行結果
Array
(
[0] => アップル
[1] => オレンジ
[2] => レモン
[3] => グレープ
[4] => メロン
)
解説
explode関数に区切り文字(”,” カンマ)と、区切り文字で区切られた文字列(”アップル,オレンジ,・・・”)を渡します。
explode関数の戻り値として、「アップル」「オレンジ」などの文字列が配列に格納されます。
【応用】URLのパスを分解する
URLをパスごとに分解したいとき、explode関数が使えます。
たとえば、「blog/staff」を「blog」と「staff」に分割して配列に変換します。
explode関数の区切り文字をスラッシュ(/)にし、URLのパスを対象文字列として渡します。
※単にホスト名やパスやパラメータにURLを分解したいときはparse_url関数を使います。
※「command=show&id=3」のようなURLパラメータを分解するにはparse_str関数を使います。
サンプルコード
URLのパス「blog/staff/12/1」をパスごとに分解します。
ソースコード
<?php
// URLのパス
$str_path = "blog/staff/12/1";
// パスを配列にする
$paths = explode("/", $str_path);
// 変換された配列を表示
print_r($paths);
?>
実行結果
Array
(
[0] => blog
[1] => staff
[2] => 12
[3] => 1
)
解説
explode関数に区切り文字(“/” スラッシュ)とパスの文字列を渡します。
結果として、パスごとに区切られて配列に格納されます。
パスの最初や最後にスラッシュがあると、空の配列要素が格納されてしまいます。
※スラッシュが前後にある文字列をexplode関数に渡した場合
explode("/", "/blog/staff/12/1/");
Array
(
[0] =>
[1] => blog
[2] => staff
[3] => 12
[4] => 1
[5] =>
)
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
まとめ
カンマ区切りの文字列を分割するには、explode関数の区切り文字にカンマ(,)、対象文字列にカンマ区切りの文字列を渡します。
explode関数の戻り値は配列で取得します。
区切り文字をスラッシュ(/)に指定すると、URLなどのパスを分解して配列に入れられます。
文字列を指定の文字で分割する処理は実務でもよく使うので、しっかりマスターしましょう。
カンマ区切りの文字列を配列にするにはexplode関数を使うんですね!
そうだね。URLの分割などいろいろ応用できるから覚えておくといいよ。
分かりました。ありがとうございます!
PHPを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!