4

連想配列にインポートする必要がある CSV ファイルがあります。データは次のようになります。

 "General Mills Cereal",http://sidom.com/dyn_li/60.0.75.0/Retailers/Saws/120914_20bp4_img_8934.jpg,$2.25,"9-17.12 oz., select varieties","Valid Sep 14, 2012 - Sep 20, 2012",Saws,"Grocery"

このデータを、次のような値を取得できる配列に変換したいと思います。

 $items[$row]['title'];
 $items[$row]['imgurl'];
 $items[$row]['itemprice'];
 $items[$row]['itemsize'];
 $items[$row]['expir'];
 $items[$row]['storename'];
 $items[$row]['storetype'];

上記の要素は、私の CSV ファイルに対応しています。このファイルをそのような配列にインポートするにはどうすればよいですか?

4

3 に答える 3

5

組み込み関数fgetcsv
の使用をお勧めします簡単な使用例もあります。

于 2012-09-18T19:05:46.570 に答える
4

fgetcsv()数値でインデックス付けされた配列が得られます。

すべてのレコードを読み込んでから言うと$rawData、次の行に沿った構造があります。

$rawData = array(0 => array(0 => "General Mills Cereal",
                            1 => "http://sidom.com/dyn_li/60.0.75.0/Retailers/Saws/120914_20bp4_img_8934.jpg"
                            2 => "$2.25",
                            3 => "9-17.12 oz.",
                            4 => "select varieties",
                            5 => "Valid Sep 14, 2012 - Sep 20, 2012",
                            6 => "Saws",
                            7 => "Grocery"),
                 ...);

この$rawData配列を必要なものに変換するには、次のようにします。

$fields = array('title', 'imgurl', 'itemprice', 'itemsize',
                'expir', 'storename', 'storetype');

$data = array_map(function($cRow) uses ($fields) {
            return array_combine($fields, $cRow);
        }, $rawData);
于 2012-09-18T19:37:44.640 に答える
3

下記URL参照

CSVから連想配列へ

それを試してみてください

csv ファイルを 1 行ずつ実行し、次のように配列に挿入します。

$array = array();
$handle = @fopen("file.csv", "r");
if ($handle) {
    while (($line = fgetcsv($handle, 4096)) !== false) {

       $array[$line[0]][$line[1]][$line[2]] = $line[3];
    }
    if (!feof($handle)) {
        echo "Error: unexpected fgets() fail\n";
    }
    fclose($handle);
}
于 2012-09-18T19:02:46.310 に答える