修改PHP脚本以从CSV文件中读取

时间:2017-11-13 18:51:12

标签: php csv

我有从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];                  

请帮助您从新专栏中准备好脚本。

任何帮助将不胜感激。

Link to full script and the csv:

1 个答案:

答案 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>