我有从CSV读取两个变量的脚本,这些变量在第0列和第5列,它很好:
$file = fopen($qtyfile,"r");
output("reading file $qtyfile");
$i=0;
$imported = 0;
$failed = 0;
while(! feof($file))
{
$i++;
$line = (fgetcsv($file));
if($i==1) continue;
$cols = explode(';',$line[0]);
$pcode = $cols[0];
$stock = $cols[5];
CSV文件已经以不同的方式进行了组合,现在该变量位于第16列和第16列。 19我试图将代码修改为以下但它不起作用:
$file = fopen($qtyfile,"r");
output("reading file $qtyfile");
$i=0;
$imported = 0;
$failed = 0;
while(! feof($file))
{
$i++;
$line = (fgetcsv($file));
if($i==1) continue;
$cols = explode(';',$line[0]);
$pcode = $cols[16];
$stock = $cols[19];
请帮助您从新专栏中准备好脚本。
任何帮助将不胜感激。
答案 0 :(得分:1)
这是一个非常棒的小函数,它将任何csv文件解析为一个关联数组,第1行的列标题为数组键。
function csvArray($file) {
$csv = array_map('str_getcsv', file($file));
array_walk($csv, function(&$a) use ($csv) {
$a = array_combine($csv[0], $a);
});
array_shift($csv);
return $csv;
}
用法:
$output = csvArray($file);
foreach ($output as $o) {
echo $o['pcode'];
// whatever
}
我必须处理很多csv文件,而且我一直都在使用它。一旦数据在一个数组中,它就会更容易处理,只要名称保持不变就不会移动代码就行了,这并不重要。< / p>