PHP阅读CSV&忽略某些列

时间:2016-10-11 13:25:23

标签: php csv

我有一个简单的PHP脚本,它读取CSV文件并从中生成一个数组:

<?php
$file = fopen('food.csv', 'r');
$allfile = [];
$idsColumnsWanted = array(0,1,16);
while (($line = fgetcsv($file)) !== FALSE) {

  $i = 0;

  foreach ($line as $i => $cell) {
      if (!in_array($i, $idsColumnsWanted)) {
          continue;
      }
      $allfile[] = $line;
      $i++;
  }

}
fclose($file);
?>

我想只显示第0,1和0列中的数据。 16。

我上面尝试过,但它仍然会输出整个CSV。

1 个答案:

答案 0 :(得分:1)

您可以使用array_intersect_key

执行此操作
$file = fopen('food.csv', 'r');
$allfile = [];

$idsColumnsWanted = array_flip([0, 1, 16]);

while (false !== $fields = fgetcsv($file)) {
    $allfile[] = array_intersect_key($fields, $idsColumnsWanted);
}

fclose($file);

注意:如果您不想将列号保留为结果数组中的键,请使用array_values(array_intersect_key(...))