【问题标题】:Checking array for duplicate of 2 objects检查数组是否有 2 个对象的重复
【发布时间】: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


【解决方案1】:

关于您的代码,我想您可以改进 elseif 操作时间字符串,仅获取小时并将该数字作为 int 进行比较。

elseif ((($data[6]) < "09:00") || (($data[6]) > "18:00"))

$hrBooked = (int) explode(':', $data[6])[0]; // This should be placed before the main if
elseif (( $hrBooked < 9) || $hrBooked > 18))

查看您的代码,我认为您将受益于使用 DateTime PHP class 进行所有检查和比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 2023-03-18
    • 2018-12-23
    • 2019-08-24
    • 2021-04-22
    • 2021-07-22
    相关资源
    最近更新 更多