2014-11-13 2 views
-1

배열의 구조를 다시 정의하는 좋은 빠른 방법 :내가 배열이처럼 보이는이

Array (
     [0] => Array 
      (
       [id] => 1 
       [day] => 12 
       [month] => 10 
       [year] => 2014 
       [event_title] => numbwe1 
       [event] => trip to this place unknown 
     ) 

    [1] => Array 
     (
      [id] => 2 
      [day] => 16 
      [month] => 10 
      [year] => 2014 
      [event_title] => number2 
      [event] => trip to this other place unknown 
     ) 
    ) 

그리고 난 그것이 내가 '돈이

Array (
    [2014] => Array (
     [10] => Array (
      [1] => Array(
       [0] => Array(
       [event_title] = numbwe1 
       [event] = trip to this place unknown 
       ) 
      ) 

      [2] => Array(
       [0] => Array(
       [event_title] = number2 
       [event] = trip to this other place unknown 
       ) 
      ) 
     ) 
    ) 
) 

같은 것을 찾고 싶은를 그것이 늦었 기 때문에 그것이 아닐지, 또는 그것이 복잡하면 나는 모른다. 그러나 나는 그것 주위에 나의 머리를 얻을 수 없다. 누구든지 아이디어가있어.

목적은 내가 년 => 월 => 날짜 =>

예에 의해 기반으로 모든 이벤트를 선택할 수 있도록하려는 것입니다. $ events [2014]는 올해 모든 이벤트를 제공합니다.

$ events [2014] [11]은 이번 달 모든 이벤트를 제공합니다.

$ events [2014] [11] [13] 모든 이벤트를 제공합니다.

대체 솔루션도 환영합니다.

답변

2
$newArray = array(); 
foreach ($array as $a) { 
    $year = $a['year']; 
    $month = $a['month']; 
    $day = $a['day']; 
    if (!isset($newArray[$year])) $newArray[$year] = array(); 
    if (!isset($newArray[$year][$month])) $newArray[$year][$month] = array(); 
    if (!isset($newArray[$year][$month][$day])) $newArray[$year][$month][$day] = array(); 
    $newArray[$year][$month][$day][] = $a; // No sense stripping out useful information 
} 
+0

ofcause, 간단한 솔루션, 난 시간이 하나에 눈 먼보고 된 16 개의 초 조나단 승리. 그래서 당신은 여분의 포인트를 얻습니다. –

+0

ps. 당신은 매력처럼 작동했다는 것을 제외하고는 라인 6과 라인 11에서 a)를 놓쳤습니다. 고마워! –

+0

@ Magic-Mouse 고마워, 나는 편집했다 - 오식에 대해 유감스럽게 생각한다 - 그것은 내가 16 초 빠르다라는 것을 위해 얻는 것이다. 또한 일반적인 복사/붙여 넣기를하고 코드를 이해하지 않고 작동하지 않는다고 불평하는 것보다는 잡는 것에 대해 감사합니다.) – sjagr

1

이것은 아마도 작동해야합니다. 경고 : 검증되지 않은

function createDateSortableArray($array) { 
    $sortableArray = []; 
    foreach ($array as entry) { 
     $year = $entry['year']; 
     $month = $entry['month']; 
     $daty = $entry['day']; 
     if (!isset($sortableArray[$year])) { 
      $sorableArray[$year] = []; 
     } 

     if (!isset($sortableArray[$year][$month])) { 
      $sortableArray[$year][$month] = []; 
     } 

     if (!isset($sortableArray[$year][$month][$day]) { 
      $sortableArray[$year][$month][$day] = []; 
     } 

     $sortableArray[$year][$month][$day][] = array(
      'event_title' => $entry['event_title'], 
      'event' => $entry['event'] 
     ); 
    } 

    return $sortableArray; 
} 
관련 문제