csvを配列に格納する方法・二次元配列 [ csvを配列に格納して表示する ]

csvを配列に格納する方法・二次元配列 [ csvを配列に格納して表示する ]

データを開いて中の情報を取り出したい事は日常茶飯事。
先日、その方法を検索していたが、
まぁ~格納した後に表示させるまでしか書いていない。

私は、格納した後にピンポイントで取り出したいというのに!
初心者にわかりにくい!

ということで、初心者な私が初心者に教える、csvを配列に格納する方法!


---

まず、

csvは二次元配列

いうものです。
これは、csvでデータを作る際、タイトル行のようなものがあって
その下にデータが埋め込まれていることが多いですね。

要は、縦列と横列で構成されたデータのことを二次元配列と言います。


例えば・・・

NO , 企業名 , 担当者名 , 商品名 , アドレス ,
1 , 忘却株式会社 , 田中 , ボールペン , test@test.jp ,
2 , 忘却株式会社2 , 田中2 , ボールペン2 , test@test.jp2 ,
3 , 忘却株式会社3 , 田中3 , ボールペン3 , test@test.jp3 ,
4 , 忘却株式会社4 , 田中4 , ボールペン4 , test@test.jp4 ,

こんなcsvファイルがあったとします。
これを配列に格納したい!

そして、3行目の商品[タイトル要素]を表示させたい!
そんな時の方法!

---

ソースです。解説付きは、下の方へ~

<?php
$list = fopen('ファイル名','r');
$h = 0; 

while ($array = fgetcsv($list, 1000,",")) { 
for ($i = 0; $i < count($array); $i++){ 
$newarray[$h][$i] = $array[$i];
}
$h++; 
}

?>

---

~解説付きソース~

<?php
//まずは、fopenでファイルを展開して、変数に入れちゃいます。
$list = fopen('ファイル名','r'); //読み込みだけだから r で対応。

//ファイルのデータを配列に入れるループをする

$h = 0; //配列の行の初期値の指定

while ($array = fgetcsv($list, 1000,",")) { 
//一行ずつ$arrayに格納します。while関数で行数分繰り返す
//fgetcsvでcsvファイルを1000バイトまでカンマで区切って変数$arrayに入れてみる
//この$arrayは、行指定がないのでカンマで区切った一列の状態

for ($i = 0; $i < count($array); $i++){ 
//$iは、列番号の指定 $iがcount($array)より小さければ繰り返して$iに1プラスする
//count($array)では、行数を求めています。今回サンプルは4行となる

$newarray[$h][$i] = $array[$i];
//変数$arrayの[$i]列目の要素を$newarrayに格納
//[$h]は行数の指定です。
//この式では、$array[$i]の要素を $newarrayの[$i]列の[$h]行に格納
//これをループしているのでcount($array)分繰り返され余すことなく全配列が格納される

}
$h++; //forが完了したら行をあらわす[$h]に1をプラスして始めに戻り繰り返す
}

?>

---

これで、$newarrayに全て配列データが格納されました!

$newarray[0][0] や $newarray[1][0]  などで指定した値が取り出せます♪

3行目の商品[タイトル要素]を表示させる場合は、
$newarray[3][4] と指定。3行目の4列目ということ!
関連記事


【 忘却板/忘れた事を貼れます 】

コメント

非公開コメント