PHPの配列を文字列として保持したい場合に、各要素の値がどこからどこまでか分かりやすいようにカンマ区切りにして保存したりします。
厳密には違うのですが、CSVデータのようなものです。
そのままファイルに出力すればCSVとして扱うことも可能です。
カンマ区切りに出力した文字列を配列に戻す方法もご紹介します。
PHPの配列をカンマ区切りの文字列するimplode
implode() は配列を1つの文字列に変換する関数です。
第1引数の$区切り文字は、カンマを使うことが多いですが、カンマ以外でも大丈夫です。
第2引数の$配列は、文字列に変換する配列です。
戻り値は、$配列の1つ1つの値の間に$区切り文字が挟まった文字列になります。
実際に動かしてみましょう。
例では$区切り文字はカンマを指定しています。
1 2 3 4 |
$ary = array("東京", "大阪", "北海道", "沖縄"); $str = implode(',', $ary); var_dump($str); |
出力結果は以下のようになります。
1 |
string(30) "東京,大阪,北海道,沖縄" |
カンマ区切りの文字列で取得できました。
ちょっと注意として、カンマ区切りで出力できたからと言って、これがCSVデータでは無いということです。
上の例ではCSVとして扱っても問題は無いのですが、配列の値の中にカンマが含まれている場合はどうでしょうか?
1 2 3 4 |
$ary = array("東京", "大阪", "北,海,道", "沖縄"); $str = implode(',', $ary); var_dump($str); |
出力すると以下のようになります。
1 |
string(32) "東京,大阪,北,海,道,沖縄" |
北海道が1つ1つ区切られて、まるで元の配列から要素が増えてしまったようですね。
CSVデータを作成する場合は別の方法もありますので、また別の記事で紹介します。
カンマ区切りの文字列をPHPの配列にする方法explode
カンマ区切りの文字列を配列に変換するにはexplode()を使います。
第1引数の$区切り文字は、配列の要素の範囲をどの文字で区切るかを定義します。
第2引数の$文字列は、配列に変換する文字列です。
戻り値は、$文字列の1つ1つの$区切り文字によって要素に分割された配列が取得できます。
実際に動かしてみましょう。
例では$区切り文字はカンマを指定しています。
1 2 3 4 |
$str = "東京,大阪,北海道,沖縄"; $ary = explode(',', $str); var_dump($ary); |
実行結果は以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
array(4) { [0]=> string(6) "東京" [1]=> string(6) "大阪" [2]=> string(9) "北海道" [3]=> string(6) "沖縄" } |
カンマ区切りの文字列が配列になりました!
まとめ
配列をカンマ区切りの文字列にするimplode()と、カンマ区切りの文字列を配列にするexplode()について説明しました。
「カンマ区切り」を使うことが多いと思ったのでカンマ区切りで説明しましたが、「%」でも「&」でも「ぽにょ」でもなんでも大丈夫です。
コメントを残す