2012-09-25 3 views
1

영화 시간표를 만들고 싶습니다. 나는 $하는 array1 영화 타이틀을 포함하고 날짜와 시간 방송이 :PHP, 다차원 배열 : 월 중 일로 교차 이벤트 발생

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 

을 그리고 나는 동안 (어떤 영화를 매주 월요일, 화요일의, 수요일의, 목요일의 금요일별로 ​​그룹화 달의 일을 포함하지 않는 $ 배열 2가 나는 또한 하루 25 "대부"에서 하루 26 '펄프 픽션 (Pulp Fiction) "에서 하루 25 영화"아메리칸 뷰티 "에서 인쇄 할 수 있도록 주말)

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] => 
     ) 

) 

나는이 두 배열을 교차해야합니다. 지금까지

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]; 
} 

그래서이 배열 $ 일 그러나 여기에서 내가 모르는 모든 방송 일 방법 이 접근법이 올바른 것인지 아니면 따르더라도

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

내가 붙어있어, 도와주세요 : 여기

내가 $ array2는 얻을 방법입니다.

덕분에 많이 좋아

+0

당신이 마지막에 무엇을 원하는가 9 월? array2에 영화를 포함 시키시겠습니까? – artragis

+0

목표를 분명히하기 위해 게시물을 편집 중입니다. – user523129

+1

먼저 영화가없는 경우에도 모든 요일을 표시하려는 경우 먼저 array2를 반복하고 싶습니다. 그런 다음 array1을 반복하여 날짜와 날짜를 일치시킬 수 있습니다. – willoller

답변

0

당신은 이상의 $ 배열 1을 반복하고 영화의 날짜를 구문 분석합니다. 하루는 내가 당신의 출력 배열에 약간의 돌연변이를 만들어

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

가있는 경우 그런 다음 배열 2 안에 보이는 것, 그것은된다 : 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] 
+0

이미 $ array2가 있습니다. 내 게시물을 참조하십시오. – user523129

+0

그래서 내가 말했던 것입니다. 나는 돌연변이를 일으킨다. 원하는대로 할 수 없습니다. – artragis