PHP,多维数组:与月份中的几天相交的事件



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

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

我有 $array 2 包含按星期一、星期二 s、星期三、星期四 s 和星期五分组的月份(周末没有电影)

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但从这里我不知道如何遵循,甚至这种方法是否正确。

以下是我获得 $array 2 的方法:

$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); 
        }
    }
}

请帮忙,我被困住了。

非常感谢

好的,

您将迭代$array 1并解析电影的日期。然后,如果你的一天在那里,你将查看 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]

最新更新