我正在嘗試處理CSV報告的問題。我試圖根據用戶選擇的內容在報告中找到基於字符串的特定信息。它是包含許多不同事件和日期信息的報告(事件可能有多個日期,所以會在每個日期重複導致事件名稱出現多次)獲取數組中匹配項的鍵
用戶選擇多個演出(特定事件/日期組合),並將這些添加到使用每個的eventId
號碼的陣列中:
例如
$eventArray = array(232 => 'event one', 21 => 'event four', 443 = 'event one');
各爲eventid => eventName
(可能有重複的事件名稱,因爲它們會在系統中不同的日期)。
我經歷的報告有以下:
$file_handle = fopen("$reportUrl", "r");
while(!feof($file_handle))
{
$line_of_text = fgetcsv($file_handle, 20000);
include('logic/finance_logic.php');
}
fclose($file_handle);
所以在CSV每行正在運行的finance_logic.php
文件中的代碼。我有困難的部分是如下:
// CHECK TO SEE IF THE FIRST LINE IS AN EVENT IN THE ARRAY (NOTE, THERE CAN BE DOUPLICATES)
if(in_array(trim(substr($line_of_text[0],6)), $eventArray))
{
$f = 1;
// get event name
$eventName = trim(substr($line_of_text[0],6));
// date of event
$eventDateArray = getEventDateArray($eventName);
}
if(isset($f))
{
$dateSearch = checkDateInArray($line_of_text[0], $eventDateArray);
if($f == 1 && $dateSearch[0] == 'found')
{
$eventId = $dateSearch[1];
$f = 2;
}
的checkDateInArray
功能如下:
function checkDateInArray($date, $array)
{
if(is_array($array))
{
foreach($array as $key => $d)
{
if (strpos($date, $d) !== false)
{
// return array with first value 'found' and second being the key which is the event id
return array('found', $key);
}
}
}
}
注:時間也不會總有GMT在最後,因爲它依賴於所以在比較日期時也需要忽略它。
所有這些導致了一個混亂的修復,我敢肯定,更簡單的另一種方式。我正在考慮的一種方式是創建的事件數組是eventId => eventName
,但eventId
與數據庫中的eventName
和eventDate
鏈接。有沒有辦法我可以創建一個eventArray
這是eventId => array('eventName', 'eventDate')
然後檢查它是否在這些。我不知道如何去做。此外,的CSV被佈置方式的一例如下:
"Event: Event One"
""
"Performance Date: 15 Feb 2013 07:30 PM GMT"
""
"Venue: Theatre"
""
"Category: English Comedy"
"Discount","A",
"GENERAL ADMISSION",35.00,
"RESERVED",0.00,
"COMPLIMENTARY",0.00,
"SPECIAL",0.00,
"Holds","A","Face Value Amt",
"H: House Seats",16,16,
"Face Value Amt",,,
"--",,,
"Capacity",371,371,
""
"INT"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"GENERAL ADMISSION",119,4165.00,119,4165.00,
"Totals*",119,4165.00,119,4165.00,
""
"PBO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"*SPECIAL",10,220.00,10,220.00,
"COMPLIMENTARY",4,0.00,4,0.00,
"GENERAL ADMISSION",22,770.00,22,770.00,
"RESERVED",0,0.00,0,0.00,
"Totals*",36,990.00,36,990.00,
""
"PHO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"*GENERAL ADMISSION",0,0.00,0,0.00,
"*SPECIAL",42,940.00,42,940.00,
"COMPLIMENTARY",10,0.00,10,0.00,
"GENERAL ADMISSION",68,2380.00,68,2380.00,
"RESERVED",0,0.00,0,0.00,
"Totals*",120,3320.00,120,3320.00,
""
"PERFORMANCE TOTALS"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"*GENERAL ADMISSION",0,0.00,0,0.00,
"*SPECIAL",52,1160.00,52,1160.00,
"COMPLIMENTARY",14,0.00,14,0.00,
"GENERAL ADMISSION",209,7315.00,209,7315.00,
"RESERVED",0,0.00,0,0.00,
"Totals*",275,8475.00,275,8475.00,
""
"Abbreviated Performance Totals"
"Event","Performance Date","Discount","Tickets","Face Value Amt",
Event One,15 Feb 2013 07:30 PM GMT,*GENERAL ADMISSION,0,0.00,
Event One,15 Feb 2013 07:30 PM GMT,*SPECIAL,52,1160.00,
Event One,15 Feb 2013 07:30 PM GMT,COMPLIMENTARY,14,0.00,
Event One,15 Feb 2013 07:30 PM GMT,GENERAL ADMISSION,209,7315.00,
Event One,15 Feb 2013 07:30 PM GMT,RESERVED,0,0.00,
,,,275,8475.00,
""
"Event: Event One"
""
"Performance Date: 16 Feb 2013 07:30 PM GMT+04:00"
""
"Venue: Theatre"
""
"Category: English Comedy"
"Discount","A",
"GENERAL ADMISSION",35.00,
"RESERVED",0.00,
"COMPLIMENTARY",0.00,
"SPECIAL",0.00,
""
"INT"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"GENERAL ADMISSION",203,7105.00,203,7105.00,
"Totals*",203,7105.00,203,7105.00,
""
"PBO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"GENERAL ADMISSION",36,1260.00,36,1260.00,
"RESERVED",0,0.00,0,0.00,
"Totals*",36,1260.00,36,1260.00,
""
"PHO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"COMPLIMENTARY",15,0.00,15,0.00,
"GENERAL ADMISSION",99,3465.00,99,3465.00,
"RESERVED",-9,0.00,-9,0.00,
"Totals*",105,3465.00,105,3465.00,
""
"PERFORMANCE TOTALS"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"COMPLIMENTARY",15,0.00,15,0.00,
"GENERAL ADMISSION",338,11830.00,338,11830.00,
"RESERVED",-9,0.00,-9,0.00,
"Totals*",344,11830.00,344,11830.00,
""
"Abbreviated Performance Totals"
"Event","Performance Date","Discount","Tickets","Face Value Amt",
Event One,16 Feb 2013 07:30 PM GMT,COMPLIMENTARY,15,0.00,
Event One,16 Feb 2013 07:30 PM GMT,GENERAL ADMISSION,338,11830.00,
Event One,16 Feb 2013 07:30 PM GMT,RESERVED,-9,0.00,
,,,344,11830.00,
""
"Event: Event Four"
""
"Performance Date: 18 Feb 2013 07:30 PM BST"
""
"Venue: Theatre"
""
"Category: English Comedy"
"Discount","A",
"GENERAL ADMISSION",25.00,
"RESERVED",0.00,
"STUDENT",15.00,
"COMPLIMENTARY",0.00,
"Senior Citizen",10.00,
"SPECIAL",0.00,
""
"INT"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"GENERAL ADMISSION",79,1975.00,79,1975.00,
"Totals*",79,1975.00,79,1975.00,
""
"PBO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"COMPLIMENTARY",2,0.00,2,0.00,
"GENERAL ADMISSION",32,800.00,32,800.00,
"RESERVED",0,0.00,0,0.00,
"Senior Citizen",4,40.00,4,40.00,
"Totals*",38,840.00,38,840.00,
""
"PHO"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"COMPLIMENTARY",10,0.00,10,0.00,
"GENERAL ADMISSION",100,2500.00,100,2500.00,
"RESERVED",0,0.00,0,0.00,
"STUDENT",4,60.00,4,60.00,
"Senior Citizen",2,20.00,2,20.00,
"Totals*",116,2580.00,116,2580.00,
""
"PERFORMANCE TOTALS"
"Discount","A","A Face Value Amt","Tickets","Face Value Amt",
"COMPLIMENTARY",12,0.00,12,0.00,
"GENERAL ADMISSION",211,5275.00,211,5275.00,
"RESERVED",0,0.00,0,0.00,
"STUDENT",4,60.00,4,60.00,
"Senior Citizen",6,60.00,6,60.00,
"Totals*",233,5395.00,233,5395.00,
""
"Abbreviated Performance Totals"
"Event","Performance Date","Discount","Tickets","Face Value Amt",
Event Four,18 Feb 2013 07:30 PM GMT,COMPLIMENTARY,12,0.00,
Event Four,18 Feb 2013 07:30 PM GMT,GENERAL ADMISSION,211,5275.00,
Event Four,18 Feb 2013 07:30 PM GMT,RESERVED,0,0.00,
Event Four,18 Feb 2013 07:30 PM GMT,STUDENT,4,60.00,
Event Four,18 Feb 2013 07:30 PM GMT,Senior Citizen,6,60.00,
,,,233,5395.00,
在此先感謝的人誰可以提供幫助。