1

我想建立一个电影时间表。我有 $array1 包含电影标题和播放日期和时间:

array = 
    0: array = 
      Title: string = American Beauty
      Date: string = 25/09/2012
      Time: string = 15:00 - 16:20
    1: array = 
      Title: string = The Godfather 
      Date: string = 25/09/2012
      Time: string = 16:20 - 18:20
    2: array =
 Title: string = Pulp Fiction
Date: string = 26/09/2012
Time: string = 15:00 - 16:20

我有 $array2 包含按星期一、星期二、星期三、星期四和星期五分组的月份中的日子(周末没有电影)

Array
(
    [1] => Array
        (
            [0] => 3
            [1] => 10
            [2] => 17
            [3] => 24
            [4] => 
        )

    [2] => Array
        (
            [0] => 4
            [1] => 11
            [2] => 18
            [3] => 25
            [4] => 
        )

    [3] => Array
        (
            [0] => 5
            [1] => 12
            [2] => 19
            [3] => 26
            [4] => 
        )

    [4] => Array
        (
            [0] => 6
            [1] => 13
            [2] => 20
            [3] => 27
            [4] => 
        )

    [5] => Array
        (
            [0] => 7
            [1] => 14
            [2] => 21
            [3] => 28
            [4] => 
        )

)

我需要将这两个数组相交,这样我就可以在第 25 天下打印电影“美国美女”,也可以在第 25 天“教父”和第 26 天“低俗小说”下打印。

意思是我需要打印:

SEPTEMBER 2012

    Monday Tuesday                          Wednesday ....
    3        4                                  5

    10       11                                 12

    17       18                                 19

    24       25                                 26                    
           15:00-16:20 American Beauty       15:00-16:20 Pulp Fiction
           16:20-18:20 The Godfather

到目前为止我的尝试:

foreach( $array1  as $key => $value ) 
{
    $theTime  = $value['Time'];
    $theTime  = explode("/", $theTime );
    $days[] = $theTime  [0];
    $months[] = $theTime  [1];
}

所以我在数组 $days 中有所有的播出日,但从这里我不知道如何遵循,即使这种方法是正确的。

这是我获得 $array2 的方法:

$month = 9; 
$year = 2012;

for ($i = 1; $i <= 31; $i++) 
{
    $timestamp = mktime(0, 0, 0, $month , $i, $year);

    if (date("n", $timestamp) == $month ) 
    {
        $day = date("N", $timestamp);

        // Monday  1 to Friday 5 
        if ($day == 1 OR $day <= 5) {
            $array2[$day][] = date("j", $timestamp); 
        }
    }
}

请帮忙,我卡住了。

非常感谢

4

1 回答 1

0

好的,您将遍历 $array1 并解析电影的日期。然后,如果您的日子在那里,您将查看 array2 内部

foreach($array1 as $movie){

    $movieDate = new DateTime($movie);
    //as you indexed $array2 with monday = 1 -> friday = 5 you can use the "w" format
    if(isset($array2[$movieDate->format("w"))){

        $array[$movieDate->format("j")][] = $movie;
    }
}

我在你的输出数组中做了一些突变,它变成了:2012 年 9 月

Monday Tuesday                          Wednesday ....
3=>[]        4 =>[]                                 5=>[]

10=>[]       11    =>[]                             12=>[]

17=>[]       18   =>[]                              19=>[]

24 =>[]      25=>[                                 26   =>[                 
       15:00-16:20 American Beauty,       15:00-16:20 Pulp Fiction]
       16:20-18:20 The Godfather]
于 2012-09-25T08:02:45.900 回答