2011-02-11 5 views
1
[0] => Array 
    (
     [id] => 26997 
     [product_id] => Array 
      (
       [0] => stdClass Object 
        (
         [id] => 1406 
         [type_id] => 1 
         [title] => Shrek - Forever After 
         [cover] => 
         [coverid] => 0 
         [inserted_by] => 0 
         [inserted_date] => 2011-02-11 14:28:08 
         [status_id] => 1 
        ) 

      ) 

     [variable_id] => 1 
     [variable_value] => 10 
     [master_value] => 
     [released_date] => 2010-12-07 
     [price] => Array 
      (
       [0] => Array 
        (
         [product_id] => 1406 
         [media_format] => BLURAY 
         [price] => 349000 
         [discount] => 5 
        ) 

      ) 

    ) 

[1] => Array 
    (
     [id] => 26678 
     [product_id] => Array 
      (
       [0] => stdClass Object 
        (
         [id] => 1375 
         [type_id] => 1 
         [title] => Shrek Quadrilogy : The Whole Story (4 Disc) 
         [cover] => 2066940989de9372d9c39e216430cd5a.jpg 
         [coverid] => 1051 
         [inserted_by] => 0 
         [inserted_date] => 2011-02-07 11:23:21 
         [status_id] => 1 
        ) 

      ) 

     [variable_id] => 1 
     [variable_value] => 10 
     [master_value] => 
     [released_date] => 2011-02-04 
     [price] => Array 
      (
       [0] => Array 
        (
         [product_id] => 1375 
         [media_format] => BLURAY 
         [price] => 999000 
         [discount] => 5 
        ) 

      ) 

    ) 

내가 결과를 보면 결과가 가장 위에 표시되기를 원합니다. released_date로 정렬하고 싶습니다. (그렇지 않으면 당신은 더 나은보다 효율적인 정렬 알고리즘을 사용하는 것, 배열이 너무 큰 아니라고 가정) ... 같은 Bubble Sort 간단한배열을 최신순으로 배열

+2

데이터베이스에서 가져 오는 경우 'ORDER BY'를 사용하여 쿼리에서 이미 정렬하십시오. 빠르고 간단합니다. 그렇지 않으면'usort'를 사용하여 커스텀 정렬 함수를 지정하십시오. – NikiC

+1

가능한 [PHP의 객체 배열 배열을 키 값으로 정렬] (http://stackoverflow.com/questions/414906/sorting-an-array-of-an-array-of-objects-in- php-by-key-value) 다차원 배열과 정렬에 관한 많은 질문이 있습니다 : http://stackoverflow.com/search?q=php+multidimensional+array+sort 그리고 대답은 (가장 자주) 동일합니다 : 'usort'를 사용하십시오. –

답변

0

사용 무언가를 도와주세요 :

for($i = 0; $i < count($myArray) - 1; $i++) { 
    for($j = $i; $j < size(myArray) - 1; $j++) { 
    if($myArray[$i]['released_data'] < $myArray[$j]['released_data']) { 
     // Swap entries 
     $tmp = $myArray[$i + 1]; 
     $myArray[$i + 1] = $myArray[$i]; 
     $myArray[$i] = $tmp; 
    } 
    } 
} 

을 그것은 기본적으로 다음 여부를 확인 항목이 현재 항목보다 크면 해당 항목을 바꿉니다.

usort도 사용할 수 있습니다. nikic도 제안했습니다. 이 함수를 사용하려면 비교 함수를 만들어야하는데, 예제에서 보았지만 함수로 래핑 된 것과 같은 비교를 사용해야합니다.

+0

왜 usort()를 사용하지 않는 것이 좋을까요? –

+0

버블 정렬? :/ – Olhovsky

+0

왜 안 되니? 아주 이해하기 쉽고 (이미 언급했듯이) 작은 목록에는 많은 속도 손실이 없습니다. 그러한 상황에서 복잡한 것을 구현하는 것은 시간 낭비 일 것입니다. 그리고 usort()가 내부적으로 Bubble Sort 알고리즘을 사용한다고 믿기에는 너무 멀리 가져 오지 않을 것입니다 ...? – Veger

2

이 nikic 제안으로 사용자 콜백 정렬 기능의에 usort를 사용하는 것입니다

function srtReleased($a, $b) { 
    $aDate = strtotime($a['released_date']); 
    $bDate = strtotime($b['released_date']); 
    if ($aDate == $bDate) { 
     return 0; 
    } 
    return ($aDate > $bDate) ? -1 : 1; 
} 


usort($array, "srtReleased"); 
0

내 조언위한 것입니다 것입니다. 훨씬 더 우아합니다. 또한 버블 정렬을 사용하지 않는 것이 좋습니다. 장점은 이해하기 쉽다는 것입니다. 당신이 릴리스 날짜를 기준으로 정렬이 기능을 채택하고,에 usort 기능을 사용할 수 있다면, 당신은 사업에

http://www.think-lamp.com/2009/08/fastest-insertion-sort-in-php/

될 것입니다 : 여기

는 PHP에 impolemented 삽입 정렬 사람에 대한 링크입니다 .

+0

Usort를 사용하여 작동하지 않습니다 ... 오류 :( – madindo

+0

"작동하지 않습니다"는 의미 (오류는 무엇입니까?)를 설명하고 코드를 표시하십시오 ... usort()가 올바른 방법입니다 ... 이제 오류를 설명해주세요. –

관련 문제