LoginSignup
0
4

More than 5 years have passed since last update.

phpで色々な種類のファイルを配列にした

Last updated at Posted at 2017-08-31

phpでファイル操作を行うことが多かったので
ファイルによっての配列作成の違いをまとめました。

ファイルの作成

適当にファイルを作ります。
テスト用として .txt .csv .json の3つのファイルを作ります。

test.txt
aaa@aaa.com
bbb@bbb.com
ccc@ccc.com
test.csv
aaa@aaa.com,bbb@bbb.com,ccc@ccc.com,
test.json
{"0":"aaa@aaa.com","1":"bbb@bbb.com","2":"ccc@ccc.com"}

配列の作成

array.php
<?php

  #test.txt 読み込み
  $str = file_get_contents('./test.txt');
  $arr = explode("\n", $str, -1);
  var_dump($arr);

  #test.csv 読み込み
  $str = file_get_contents('./test.csv');
  $arr = explode(",", $str, -1);
  var_dump($arr);

  #test.json 読み込み
  $str = file_get_contents('./test.json');
  $arr = json_decode($str, true);
  var_dump($arr);

出力結果

array(3) {
  [0]=>
  string(11) "aaa@aaa.com"
  [1]=>
  string(11) "bbb@bbb.com"
  [2]=>
  string(11) "ccc@ccc.com"
}
array(3) {
  [0]=>
  string(11) "aaa@aaa.com"
  [1]=>
  string(11) "bbb@bbb.com"
  [2]=>
  string(11) "ccc@ccc.com"
}
array(3) {
  [0]=>
  string(11) "aaa@aaa.com"
  [1]=>
  string(11) "bbb@bbb.com"
  [2]=>
  string(11) "ccc@ccc.com"
}

まとめ

ファイルの形式によって配列の作り方は違う。
しかし、基本的には下記の関数を使えば配列は作れる。

file_get_contents : ファイルを読み込んで文字列として返す
explode : 文字列を区切り文字で分割して配列にする
json_decode : jsonファイル読み込んでデコードする

今回の場合ではexplodeの第3引数に-1を設定して
配列の最後に空文字の値が入らないようにしたり、json_decodeの第2引数をtrueにして
objectではなく配列を作成するようにしています。

公式リファレンスに引数の詳しいことが載っています。

http://php.net/manual/ja/function.file-get-contents.php
http://php.net/manual/ja/function.explode.php
http://php.net/manual/ja/function.json-decode.php

おまけ

.phpファイルを読み込む

test.php
<?php
  $arr = [
    'aaa@aaa.com',
    'bbb@bbb.com',
    'ccc@ccc.com'
  ];
array.php
  #test.php 読み込み
  require('./test.php');
  var_dump($arr);

出力結果 :

array(3) {
  [0]=>
  string(11) "aaa@aaa.com"
  [1]=>
  string(11) "bbb@bbb.com"
  [2]=>
  string(11) "ccc@ccc.com"
}
0
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4