csvを読み込んで、
csvの1行目のデータを表示したいです(2行目以降は表示できています。)
読み込む側
php
1function getTest() 2{ 3 $file = dirname(__FILE__) . '/data/test.csv'; 4 5 $result = []; 6 7 $source = file_get_contents($file); 8 $temp = tmpfile(); 9 fwrite($temp, $source); 10 rewind($temp); 11 12 $csv_data = []; 13 while(($data = fgetcsv($temp, 0, ",")) !== FALSE) { 14 $csv_data[] = $data; 15 } 16 fclose($temp); 17 18 $header_data = []; 19 foreach(array_splice($csv_data, 0, 2) as $data) { 20 $column = array_shift($data); 21 foreach($data as $key => $value) { 22 $header_data[$key][$column] = $value; 23 } 24 } 25 26 $result = [ 27 'header' => $header_data, 28 'body' => $csv_data, 29 ]; 30 31 return $result; 32}
受け取り側
html
1<?php$test_data = getTest(); ?> 2<?php foreach($test_data['header'] as $data): ?> 3<th><?php echo $data['test']; ?></th> 4<?php endforeach; ?>
CSVファイル↓
|test|aaa|bbb|ccc|ddd|
|:--|:--:|--:|
|name|111|222|333|444|
|果物|りんご|みかん|ぶどう|カレー|
|飲み物|コーラ|カルピス|ソーダ|カレー|
・
・
・
上記のような感じです。
nameは表示できていて、testが表示されない状況です。
ちなみに最初は
php
1$source_r= mb_convert_encoding($source_r, 'UTF-8', 'sjis-win'); 2```という記述をいれSJISのcsvでこの場合は1行目も表示されていました。 3しかし、csvをutf−8にしたら表示されなくなりました。 4 5ご教示のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー