2011-07-28 47 views
0

PHP。我有三個陣列,每個陣列填充50個項目:$ articles,$ quotes,$ links。每個陣列中的每個項目都有一行內容和一個日期。將一堆數組分類到一個數組中,使用重要性作爲權重

目標是根據數組類型的重要性創建一個按日期排序(從最新到最舊)的數組。例如,它應該總是顯示比引號更多的文章,並且引用比鏈接更多。例如:

文章,文章,文章,報價,文章,鏈接,文章,文章,報價,文章,文章,報價,文章,鏈接。

有沒有簡單的方法來做到這一點?謝謝!

+0

文章,引號和鏈接數組是否已按日期排序? – GWW

+0

是的,他們按日期排序。 –

回答

1

你可以採取的MOD操作的優勢。

$result = array(); 
$i = 0; 
$count = 0; 
while(true) { 
    $i++; 

    $result[] = array_pop($articles); 
    if (++$count >= 50) break; // 50 items is enough 

    if ($i % 3 == 0) { // one quote every 3 articles 
     $result[] = array_pop($quotes); 
     if (++$count >= 50) break; 
    } 

    if ($i % 5 == 0) // one link every 5 articles 
     $result[] = array_pop($links); 
     if (++$count >= 50) break; 
    } 
} 
0
  • 您可以按每個日期上三個陣列,然後做手工歸併排序依據(日期,重要性)。在合併排序之前,可能需要將三個數組放在一個數組中,然後編寫一個通用合併排序,以便稍後可以輕鬆地將新類型添加到系統中。
  • 您可以爲標記重要性的每條記錄添加一個自定義字段,合併三個數組,然後使用基於(日期,重要性)的自定義比較的內置排序。實現這個很容易。

呃..抱歉misundertanding,我還以爲你要基於日期元素進行排序,如果根據重要性平等:/

相關問題