【发布时间】:2021-01-10 17:51:52
【问题描述】:
我有一个小程序 sunning,它读取包含客户及其预订的 csv 文件并将它们放入嵌套数组中,我已经对一些数据进行了排序,但现在需要确保没有任何客户预订相同的日期和时间(也可以检查时间是否至少相隔 30 分钟,所有时间都以 30 分钟为增量)我尝试了一个简单的 in_array 方法,但没有尝试其他一些方法和没有得到任何地方,任何想法我怎么能做到这一点。 $date[5] 是日期,$data[6] 是时间,数据都是字符串。
if (($h = fopen("{$filename}", "r")) !== FALSE) {
//each line in the file is converted into its own individual array
while (($data = fgetcsv($h, 1000, ",")) !==FALSE) {
//check if anyone has tried to book for unavailable dates, weekends, last day of the month etc
if (!in_array($data[5], $Adates)) {
$contact[] = $data;
}
//this checks if the person is trying to make a booking before 9am or after 6pm
elseif ((($data[6]) < "09:00") || (($data[6]) > "18:00")) {
$contact[] = $data;
} else {
$College1[] = $data;
}
if (in_array($data[5], $College1)
&& in_array($data[6],$College1)) {
$College2[] = $College1;
}
这是我使用的一些测试数据的样本(有超过 30 个客户):
T1,Aleshia,Tomkiewicz,atomkiewicz@hotmail.com,01835-703597,03/11/2020,11:30,P256
T2,Evan,Zigomalas,evan.zigomalas@gmail.com,01937-864715,12/11/2020,15:00,P146
T3,France,Andrade,france.andrade@hotmail.com,01347-368222,30/11/2020,08:30,P68
【问题讨论】:
-
"$date[5] 是日期,$data[6] 是时间,数据都是字符串。"将其更改为具有日期和时间。它比字符串更容易使用。此外,当您实际将日期存储在字符串中时,请使用“yyyyMMdd”格式,不要使用任何其他格式。这使得(至少)可以对这些东西进行排序。
-
不知道
$Adates或$College1中的内容,所以了解这一点会有所帮助 -
希望那些不是真正的电子邮件
-
“读取包含客户及其预订的 csv 文件...确保没有任何客户在同一日期预订” - 就应用程序设计而言,这是一种分形恐怖故事。
标签: php