如何跳过第一行并从PHP中的csv读取最多五行

时间:2016-05-24 04:22:31

标签: php csv fgetcsv fputcsv

如何跳过第一行并从PHP中的csv读取最多五行

您好,

我有以下代码,其中我想在csv中跳过第一行,即列的标题,并读取五行csv文件。

当前代码跳过第一行但显示所有记录。

我怎样才能做到这一点?

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
set_time_limit(0);

define('CSV_PATH', '/var/www/Products_upload_12499/'); // specify CSV file path

$csv_file = CSV_PATH . "skipfirstrow.csv"; // Name of your CSV file
$csvfile  = fopen($csv_file, 'r');

$counter = 1;
while ($data = fgetcsv($csvfile)) 
{
    if($counter==1) {
            $counter++;
            continue;
            }       }
    $days = trim($data[0]);
    echo "==>> " . $days."\n";
        if ($counter >= 6) {
        exit();
    }

}

?>

3 个答案:

答案 0 :(得分:1)

您可以创建一个if else条件,只输出您想要的行,并在您获得所需的所有行时打破while循环:

$row = 0;
while ($data = fgetcsv($csvfile)) 
{
    $row++;//starts off with $row = 1
    if (($row>1)&&($row<6))//rows 2,3,4,5
    {
        foreach ($data as $cell)
        {
           echo "|  {$cell}  |";
        }
        echo "<br>";
    }
    else if ($row>=6)
    {
        break;
    }
}

您可以将echo "| {$cell} |";代码替换为您要输出的代码。

如果这对您有用,请告诉我。

答案 1 :(得分:0)

只是跳过第一行不等于分配!=,让我知道它是否有用

$counter = 1;
while ($data = fgetcsv($csvfile)) 
{
    if($counter !=1) {
      $days = trim($data[0]);
      echo "==>> " . $days."\n";
      if($counter >= 6)
        break;
    }
    $counter++;
}

答案 2 :(得分:0)

另一个实现此目的的代码 fgets用于跳过行以避免过多的csv解析。

if (($f = fopen('test.csv', 'r')) === false)
  throw new Exception('File not found');

$skip = 1;
$length = 5;

for ($i = 1; $i < $skip; $i++) fgets($f); // skip first $skip lines
for ($i = $skip; $i < $skip + $length; $i++) {
  $row = fgetcsv($f);
  echo implode(', ', $row)."<br/>\n";
}