0

我遇到了 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");
?>

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

有人可以帮忙吗?

谢谢

4

2 回答 2

0

这是基于 fgetcsv 的官方 PHP 文档

$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);
于 2013-04-15T20:22:31.810 回答
0

您的 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>";
    }
于 2014-12-08T01:16:06.587 回答