0

私はこのような配列を持っています:

配列 (

[0] => stdClass Object
    (
        [Start] => 08:00
        [dayName] => Tuesday
        [dayID] => 2
        [courseName] => Math

    )

[1] => stdClass Object
    (
        [Start] => 10:00
        [dayName] => Tuesday
        [dayID] => 2
        [courseName] => Geography
    )

[2] => stdClass Object
    (
        [Start] => 14:00
        [dayName] => Tuesday
        [dayID] => 2
        [courseName] => Science
    )

[3] => stdClass Object
    (
        [Start] => 10:00
        [dayName] => Thursday
        [dayID] => 4
        [courseName] => Math
    )

[4] => stdClass Object
    (
        [Start] => 18:00
        [dayName] => Friday
        [dayID] => 5
        [courseName] => History
    )

) 私がやりたいことは、現在の曜日と時刻を配列の値と比較したいということです。たとえば、火曜日の午前 7:00 であるとします。次に、Object[0] を取得します。しかし、11:00 の場合は、火曜日の 14:00 に開始される Object[2] を取得する必要があります。火曜日の 16:00 で、 Object[3] が必要です。

週末の場合、週の始まりは火曜日の 8:00 で数学コースが必要です。

key => value を使用してそれを取得しようとしましたが、混同しました。日と時間を比較するにはどうすればよいですか。その組み合わせにコースがある場合は、チェックを続けるだけでなく、それを選択してください。

よろしくリトルブルー

4

2 に答える 2

1
function getObject($array){
    $timeNow = date('U'); // time now
    $oneHour = $timeNow+3600; // time now + 1 hour

    foreach($array as $num => $one){ // loop in each $array
        $date = strtotime($one->Start); // convert start time to timestamp
        if($date >= $timeNow && $date < $oneHour && date('l', $date) == $one->dayName){ // if all criteria met
            return $array[$num]; // return that object
        }
    }
    return array('no data'); // if no criteria is met return no data.
}


$course = getObject($yourArray);
echo $course->courseName;
于 2012-09-24T16:54:22.923 に答える
0

DateTime と単純な最小検索を組み合わせて使用​​できます。

$myCourse = null;//initialisation
$myCourseDate =null;
$now = new DateTime;
foreach($array as $course){
   //get the date from the datas
   $date = DateTime::createFromFormat('l h:i',$course->dayName.' '.course->start);
   if($now < $date && ($myCourseDate === null || $myCourseDate > $date)){
      $myCourse = $course;
      $myCourseDate = $date;
   }
}
//at the end of the loop, you've got the expected course
于 2012-09-24T16:53:36.197 に答える