PHP7技術者認定初級試験に向けて学習中の身です。
備忘録として残します。
1. csvファイルを作成
sample.csv
1,"りんご,バナナ",フルーツ
2,オレンジ,フルーツ
fgetcsvを使えば、こうしたCSVのデータを配列として読み込むことができます。
まずは1行だけ読み込む方法から。
読み込んだ値をvar_dump関数で出力します。
2. newfile.phpファイルを作成
newfile.php
<?php
$fp = fopen("sample.csv", "r");
$data = fgetcsv($fp);
var_dump($data);
fclose($fp);
?>
3. 実行結果(コンソール)
array(3) {
[0]=>
string(1) "1"
[1]=>
string(19) "りんご,バナナ"
[2]=>
string(12) "フルーツ"
}
1行目のデータがカンマ区切りで配列として出力されました。
でも1行目のデータだけ出力できても困ります。
そこで次に全てのCSVデータを読み取って出力する方法を書いていきます。
方法としては、while文でCSVのデータを1行ずつ繰り返し読み取ります。
4. newfile.phpファイルを修正
newfile.php
<?php
$fp = fopen("sample.csv", "r");
# テーブルタグを作成し、テーブルヘッダーで見出しを作る
echo '<table border="1">
<tr>
<th>ID</th>
<th>フルーツ</th>
</tr>';
# while文でCSVファイルのデータを1つずつ繰り返し読み込む
while($data = fgetcsv($fp)){
// テーブルセルに配列の値を格納
echo '<tr>';
echo '<td>'.$data[0].'</td>';
echo '<td>'.$data[1].'</td>';
echo '</tr>';
}
# テーブルの閉じタグ
echo '</table>';
fclose($fp);
?>
ブラウザで表示してみます。
5. ブラウザで表示
このように全てのCSVデータを配列として読み取り、テーブルで整えて表示させることができました。