2014-10-23 2 views
0

내가 이렇게 생긴 큰 배열 개체가 개체 :순서 변경 포함하는 다차원 배열은

내가이 출력 결과 하루 값을 기준으로 할 수있는 방법으로 그것을 재구성 할 필요가
$items = Array 
(
[0] => stdClass Object 
    (
     [id] => 1 
     [day] => 2 
     [created] => 2014-10-22 21:32:52 
    ) 

[1] => stdClass Object 
    (
     [id] => 3 
     [day] => 3 
     [created] => 2014-10-22 21:35:19 
    ) 

[2] => stdClass Object 
    (
     [id] => 4 
     [day] => 3 
     [created] => 2014-10-22 21:35:23 
    ) 

) 

. 예를 들어, 모든 레코드는 day = 3과 연관됩니다.

일주일을 기준으로하는 코드 구조가 이미 있으므로이 배열에 대해 별도의 루프를 실행하여 기존 구조의 각 날짜와 일치하는 레코드를 삽입해야합니다. 예를 들어

:

$wk = array(1 => "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); 

foreach ($wk as $k => $v) { 
    ... 
    // insert records from $items 
} 

이러한 목표를 달성하기 위해 내 $ 항목 배열을 재 작성하는 방법이 있나요? 그렇다면 어떻게? 모든 제안을 감사하십시오.

답변

1
  • 새로운 배열을 생성
  • 이 같은 새로운 인덱스에

뭔가 오래된 배열의 항목을 추가 존재하지 않는 경우

  • 새로운 배열의 인덱스를 생성 된 배열을 통해
  • 으로 반복 작동해야합니다 :

    // Create new array 
    $daySortedItems = array(); 
    
    // Iterate over old array 
    foreach ($items as $item) { 
        // Create index in new array if it doesn't exist 
        if (! isset($daySortedItems[$item->day])) { 
         $daySortedItems[$item->day] = array(); 
        } 
    
        // Add item of old array to new index 
        $daySortedItems[$item->day][] = $item; 
    } 
    

    희망, this in, combi 귀하의 previous question 국가는 귀하의 문제를 해결합니다. 이와 같이 핫 픽스를 던지는 것은 나쁜 습관이라고 간주됩니다. 더 나은 해결책은 낮은 수준에서 문제를 해결하는 것입니다. 데이터베이스를 쿼리 할 때 day 키의 결과 집합에 직접 인덱스를 지정하십시오.

  • +0

    그것은 제조 : 배열 ([] => 배열 ( [0] => stdClass 객체 ( [ID] => 1 [일] => 3 [작성] => 2014-10- 22 21시 32분 52초 ) [1] => stdClass 개체 ( [ID] => 3 [일] => 3 [작성] => 2014년 10월 22일 21시 35분 19초 ) [2] => stdClass 객체 ( [id] => 4 [day] => 3 [created] => 2014-10-22 21:35:23 ) – santa

    +0

    죄송합니다. 허용되는 댓글 길이로 인해 축약해야했지만 일반적으로 관련 날짜와 데이터를 비교하는 데 사용할 수있는 방법을 알 수 없습니다. 이것은 단지 예일뿐입니다. 그러나 매일 더 많은 기록이있을 수 있습니다. – santa