33

CSVファイルをインポートしようとしています。私たちが使用しているプログラムのため、最初の行は基本的にすべてのヘッダーです。これは、HTMLを介して独自のヘッダーを既に配置しているためです。CSVの最初の行をスキップするコードを取得するにはどうすればよいですか?(strposコマンドは、すべての行の最初のフィールドを切り取るものです。)

<?php
$row = 1;
if (($handle = fopen("ptt.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $num = count($data);
           $row++;
    for ($c=0; $c < $num; $c++) {
    if(strpos($data[$c], 'Finished') !== false) {
    $c++;
echo "<TR> <TD nowrap>" . $data[$c] . "</ TD>"; }
    Else{
        echo "<TD nowrap>" .  $data[$c] . "</ TD>";
        }
    }
}
fclose($handle);
}
?>
4

8 に答える 8

65

それが最初の行であるかどうかをチェックするためにif条件を使用するよりも、以下に示すように、whileループが開始する行の前にコードの行を追加する方が適切です。

....
.....
fgetcsv($handle);//Adding this line will skip the reading of th first line from the csv file and the reading process will begin from the second line onwards
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
.......
.......

とても簡単です......

于 2013-10-08T08:21:55.430 に答える
33

とにかく行番号を追跡しているのでcontinue、最初の行のループの残りをスキップするために使用できます。

たとえば、whileループの先頭(すぐ上$num = count($data))にこれを追加します。

if($row == 1){ $row++; continue; }

これを行う方法は他にもありますが、続行するときは、$rowまだインクリメントされていることを確認してください。そうしないと、無限ループが発生します。

于 2012-06-05T16:32:37.457 に答える
2

これをwhileループの中に入れてください:

if ($row == 1) continue;

于 2012-06-05T16:30:53.083 に答える
2

次のコード行を使用してください

$flag = true;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($flag) { $flag = false; continue; }
//your code for insert
}

フラグ変数をtrueに設定し、falseに設定すると、CSVファイルの最初の行がスキップされます。これはシンプルで実装が簡単です。

于 2017-12-29T13:50:22.080 に答える
0

while上のループの本体にこれを追加します$row++;

if ($row == 1) {
    continue;
}
于 2012-06-05T16:31:16.583 に答える
0
$count = 0;
while (($fields = fgetcsv($handle, 0, ",")) !== FALSE) {
    $count++;
    if ($count == 1) { continue; }
于 2014-03-04T08:16:49.123 に答える
0

これは私のために働いた:

$count = 0;

while(! feof($file))

      {

          $entry = fgetcsv($file, 0, ';');

          if ($count > 0) {
          //skip first line, header


          }

      $count++;
}
于 2017-06-26T11:31:10.863 に答える
-2

このコードを使用する

// mysql hostname
$hostname = 'localhost';
// mysql username
$username = 'root';
// mysql password
$password = '';

if (isset($_FILES['file']))
{   

// get the csv file and open it up
$file = $_FILES['file']['tmp_name'];
//$handle is a valid file pointer to a file successfully opened by fopen(), popen(), or fsockopen(). 
$handle = fopen($file, "r"); 
    try { 
    // Database Connection using PDO
    $dbh = new PDO("mysql:host=$hostname;dbname=clasdb", $username, $password);
    // prepare for insertion
    $STM = $dbh->prepare('INSERT INTO statstrackertemp (ServerName, HiMemUti, AvgMemUti, HiCpuUti, AvgCpuUti, HiIOPerSec, AvgIOPerSec, HiDiskUsage, AvgDsikUsage) VALUES (?, ?, ?, ?, ?,?, ?, ?, ? )');



        if ($handle !== FALSE) 
        {
            // fgets() Gets a line from file pointer and read the first line from $handle and ignore it.   
            fgets($handle);
            // created loop here
            while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
            {
            $STM->execute($data);
            }       

            fclose($handle);

        }

    } 
    catch(PDOException $e)
    {
    die($e->getMessage());
    }

echo 'Data imported'; 

}
else 
{
echo 'Could not import Data';
}

?>
于 2013-11-27T07:10:36.373 に答える