我有一个包含四个数据字段的CSV文件:
date;place;time;event
第一个是日期,如您所见。
我需要逐行读取CSV,将DATE与当前日期进行比较,并从当前日期的行开始输出10行。
我试过这段代码:
<?php
date_default_timezone_set("Europe/Zagreb");
$today = date('Ymd');
$file_handle = fopen("data.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024,";");
if ($line_of_text[0] >= $today) echo $line_of_text[0] . "-" . $line_of_text[1]. "-" . $line_of_text[2] . "-" . $line_of_text[3] . "<BR>";
}
fclose($file_handle);
?>
但我不能在10行之后打破这一点。我在CSV和代码中使用了 YYYYMMDD 日期格式,所以基本上我使用的是数字,而不是日期。
答案 0 :(得分:4)
试试这个:
date_default_timezone_set("Europe/Zagreb");
$today = date('Ymd');
$file_handle = fopen("data.csv", "r");
$counter = 0;
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024,";");
if ($line_of_text[0] >= $today) {
echo $line_of_text[0] . "-" . $line_of_text[1]. "-"
. $line_of_text[2] . "-" . $line_of_text[3] . "<br />";
$counter++;
}
if ($counter == 10) break;
}
fclose($file_handle);
答案 1 :(得分:1)
如果条件应该通过添加strtotime来修复,然后才能进行比较:
if (strtotime($line_of_text[0]) >= strtorime($today))
您更正后的代码将是:
$counter = 0;
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024,";");
if (strtotime($line_of_text[0]) >= strtotime($today)) {
echo $line_of_text[0] . "-" . $line_of_text[1]. "-" . $line_of_text[2]
. "-" . $line_of_text[3] . "<BR>";
$counter++;
}
if ($counter == 10) break;
}