2011-02-11 47 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 
        ) 

      ) 

    ) 

我想按發佈日期排序,如果你看結果我希望結果是最新的結果。請幫助...排列最新的

+2

如果您從數據庫獲取該數據庫,請使用`ORDER BY`在查詢中進行排序。這更快,更簡單。否則使用`usort`來指定一個自定義的排序功能。 – NikiC 2011-02-11 08:28:47

+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`。 – 2011-02-11 08:35:42

回答

0

使用一些簡單的像Bubble Sort(假設你的數組不是太大,否則你最好使用更有效的排序算法):

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()? – 2011-02-11 08:32:31

2

這是用戶回調排序功能是爲了什麼

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,作爲nikic建議。它更優雅。另外,我不會推薦使用Bubble Sort。唯一的優點是更容易理解。

下面是一個插入排序有人在PHP impolemented鏈接:

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

如果你可以通過此功能進行排序依據的發佈日期,並使用usort功能,你將在商業。