2011-07-28 8 views
0

PHP。私は$ article、$ quotes、$ linksの各50個の項目で満たされた3つの配列を持っています。各配列の各項目には、内容の行と日付があります。重要度を重みとして使用して配列の束を1つの配列にソート

目的は、配列型の重要度に基づいて重み付けされた日付(最新のものから古いもの)でソートされた1つの配列を作成することです。たとえば、引用よりも記事が多く、リンクよりも引用が多いはずです。例:

記事、記事、記事、引用、記事、リンク、記事、記事、見積もり、記事、記事、見積もり、記事、リンク。

これを行う簡単な方法はありますか?ありがとう!

+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
  • 3つの配列をそれぞれ日付順にソートし、(日付、重要度)に基づいて手動マージソートを行うことができます。マージソートの前に、3つの配列を1つの配列に配置し、汎用マージソートを書く価値があるので、後でシステムに新しい型を簡単に追加することができます。
  • 重要度のフラグを立てる各レコードにカスタムフィールドを追加し、3つの配列をマージし、(日付、重要度)に基づいてカスタム比較でビルトインソートを使用することができます。これを実装するのはとても簡単です。

オム.. misundertandingのため申し訳ありませんが、私はあなたが日付に基づいて要素をソートしたいと思ったし、それは重要性に基づいて等しいかどう:/

関連する問題