【问题标题】:Manipulating CSV data with PHP使用 PHP 处理 CSV 数据
【发布时间】:2013-04-15 19:23:50
【问题描述】:

我遇到了 PHP 问题 - 我有一个 CSV 文件,看起来像这样:

客人姓名、类别、到达、离开、价格

约翰·史密斯,休闲,01-04-10、02-04-10、150

安·沃森,私人,01-04-11、02-04-11、120

现在 - 有数千行。我需要按类别对它们进行分组,然后为所有休闲添加费率,然后是所有私人等。这样我就可以获得每个类别的总数。

我已经设法使用以下代码导入 CSV 文件:

<?php
$fp = fopen('bookings.csv','r') or die("can't open file");
print "<table>\n";

while($csv_line = fgetcsv($fp,1024)) {
    print '<tr>';
    for ($i = 0, $j = count($csv_line); $i < $j; $i++) 
    {
        print '<td>'.$csv_line[$i].'</td>';
    }
    print "</tr>\n";
}

print '</table>';
fclose($fp) or die("can't close file");
?>

但我很难将它们分组并将值放入变量(来自相关单元格的特定值)

有人可以帮忙吗?

谢谢

【问题讨论】:

  • 您需要网页的结果还是数字?
  • 您必须遍历数据并处理它,但是您需要处理它 - 您尝试过做什么?您发布的代码只是输出它,它甚至没有尝试进行任何聚合。

标签: php arrays csv


【解决方案1】:

这是基于 fgetcsv 的 official PHP Doc

$ratings = array()

if (($handle = fopen("bookings.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        if(!isset($ratings[$data[1]]))
            $ratings[$data[1]] = $data[4];
        $ratings[$data[1]] += $data[4];
    }
    fclose($handle);

var_dump($ratings);

【讨论】:

    【解决方案2】:

    您的 csv 文件应遵循数据库的模式。如果您的 csv 文件列是这个 Guestname ,类别,到达,离开,率这也应该是您的数据库的格式。我建议在显示之前将您的数据存储在您的数据库中.. 试试这个代码

    if (isset($_FILES['file'])) 
        {
            //Import uploaded file to Database
            $handle = fopen($_FILES['file']['tmp_name'], "r");
    
            while (($data = fgetcsv($handle, 5000, ",")) !== FALSE) 
            {
                $import= mysqli_query ($connect,"INSERT into table(Column_1,Column_2,Column_3,Column_4) 
                values('$data[0]','$data[1]','$data[2]','$data[3]')");
    
            }
               //fclose($handle);
    
        }
        else
        {
            echo "<script>alert('No File Selected')
    </script>";
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      • 2018-10-21
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多