我有一个 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 文件。如何将此文件导入到这样的数组中?
我建议使用内置函数fgetcsv
还有一个简单的用法示例。
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);
请参阅以下网址
尝试一下
逐行运行 csv 文件,然后插入到数组中,如下所示:
$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);
}
我已经做到了。
<?php
$file = "galerie.csv";
$handle = fopen($file, "r");
while (($data = fgetcsv($handle)) !== FALSE) {
$galerie[$data[0]]["alt"] = $data[1];
$galerie[$data[0]]["caption"] = $data[2];
}
fclose($handle);
print_r($galerie);
?>