3
我打開一欄中的狀態爲兩列CSV,另一欄中爲m/d/y格式的交付日期。我想刪除重複的狀態條目,該條目的日期早於最近的相應日期。如果日期已過,則從CSV中刪除行
例如,如果CSV包含:
CA,1/5/16
CA,4/8/15
CA,3/2/15
OR,3/4/15
OK,3/4/14
...我只想要存儲:
CA,1/5/16
OR,3/4/15
OK,3/4/14
然後,我要交貨日期在這個新的數組比較到當前日期,並只顯示過去有日期的狀態(只有OR和OK)。爲了提供上下文,一個國家的交付來自不同的部分,我只想列出具有完全交付貨物的國家。
我被困在比較和刪除日期部分,但認爲我休息了。到目前爲止,我有:
<?php
if (($handle = fopen("test.csv", "r")) !== FALSE) {
$row=0;
$csv_delivered = array();
while (($line_of_text = fgetcsv($handle, 1000, ",")) !== FALSE) {
$date=$line_of_text[1];
if(\DateTime::createFromFormat('m/d/y',$date) < new \DateTime()){
//date is in the past
$csv_delivered[] = $line_of_text;
}
}
fclose($handle);
foreach ($csv_delivered as $delivered) {
$states_delivered.= $delivered[0].","; //state
}
}
?>
<p>Delivered: <?php echo $states_delivered; ?></p>
謝謝!非常接近 - 這清除了第一步的數據,但不再檢查日期是否過去。 – foolsgoat
好的,編輯... – syck
這仍然顯示CA(1/5/16),但正確地刪除任何未複製的狀態。它不應該顯示1/5/16,因爲它是未來日期。 – foolsgoat