使用重要性作为权重,将一堆数组排序为一个数组

时间:2011-07-28 20:04:06

标签: php arrays sorting

PHP。我有三个阵列,每个阵列有50个项目:$ articles,$ quotes,$ links。每个数组中的每个项目都有一行内容和日期。

目标是创建一个数组,按日期排序(从最新到最旧),根据数组类型的重要性进行权重。例如,它应该总是显示比引号更多的文章,以及比链接更多的引用。例如:

文章,文章,文章,引用,文章,链接,文章,文章,引用,文章,文章,报价,文章,链接。

有没有简单的方法可以做到这一点?谢谢!

2 个答案:

答案 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;
  }
}

答案 1 :(得分:0)

  • 您可以在日期对三个阵列中的每一个进行排序,然后根据(日期,重要性)进行手动合并排序。在合并排序之前,将三个数组放在一个数组中并编写一个通用的合并排序可能是值得的,因此您可以在以后轻松地向系统添加新类型。
  • 您可以为标记重要性的每条记录添加自定义字段,合并三个数组,然后使用内置排序和基于(日期,重要性)的自定义比较。实现这个很容易。

嗯...对于误导,我认为你想根据日期对元素进行排序,如果基于重要性这是相等的:/