記事

PHPでCSV形式のファイルを読み込んで配列に変換する

色々比較してくれたサイトがあったので

【PHP】その CSV 変換、本当に「fgetcsv」でいいの? (フェンリル | デベロッパーズブログ)

fopen + fgetcsv

$file = new SplFileObject("dummy.csv"); 
$file->setFlags(SplFileObject::READ_CSV); 
foreach ($file as $line) {
    $array[] = $line;
}

SplFileObject

こんなん普通出てこないだろ・・・

$handle = fopen("dummy.csv", "r");
while($line = fgetcsv($handle)){
    $array[] = $line;
}

ちなみに$arrayをvar_dumpした結果

array(5) {
  [0]=>
  array(15) {
    [0]=>
    string(7) "1110101"
    [1]=>
    string(7) "1110101"
    [2]=>
    string(6) "函館"
    [3]=>
    string(0) ""
    [4]=>
    string(0) ""
    [5]=>
    string(5) "11101"
    [6]=>
    string(1) "1"
    [7]=>
    string(8) "040-0063"
    [8]=>
    string(40) "北海道函館市若松町12-13"
    [9]=>
    string(10) "140.726413"
    [10]=>
    string(9) "41.773709"
    [11]=>
    string(10) "1902-12-10"
    [12]=>
    string(0) ""
    [13]=>
    string(1) "0"
    [14]=>
    string(7) "1110101"
  }
  [1]=>
  array(15) {
    [0]=>
    string(7) "1110102"
    [1]=>
    string(7) "1110102"
    [2]=>
    string(9) "五稜郭"
    [3]=>
    string(0) ""
    [4]=>
    string(0) ""
    [5]=>
    string(5) "11101"
    [6]=>
    string(1) "1"
    [7]=>
    string(8) "041-0813"
    [8]=>
    string(21) "函館市亀田本町"
    [9]=>
    string(10) "140.733539"
    [10]=>
    string(9) "41.803557"
    [11]=>
    string(0) ""
    [12]=>
    string(0) ""
    [13]=>
    string(1) "0"
    [14]=>
    string(7) "1110102"
  }
  [2]=>
  array(15) {
    [0]=>
    string(7) "1110103"
    [1]=>
    string(7) "1110103"
    [2]=>
    string(6) "桔梗"
    [3]=>
    string(0) ""
    [4]=>
    string(0) ""
    [5]=>
    string(5) "11101"
    [6]=>
    string(1) "1"
    [7]=>
    string(8) "041-1210"
    [8]=>
    string(46) "北海道函館市桔梗3丁目41-36"
    [9]=>
    string(10) "140.722952"
    [10]=>
    string(9) "41.846457"
    [11]=>
    string(10) "1902-12-10"
    [12]=>
    string(0) ""
    [13]=>
    string(1) "0"
    [14]=>
    string(7) "1110103"
  }