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


Sorting a bunch of arrays into one array, using importance as a weight

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

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

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

有什么简单的方法可以做到这一点吗?谢谢

您可以利用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;
  }
}
  • 您可以根据日期对三个数组中的每一个进行排序,然后根据(日期、重要性(进行手动合并排序。在进行合并排序之前,可能值得将三个数组放在一个数组中,并编写一个通用的合并排序,这样以后就可以轻松地向系统添加新类型
  • 您可以为每条记录添加一个标记重要性的自定义字段,合并三个数组,然后使用内置排序和基于(日期,重要性(的自定义比较。实现这个非常容易

嗯。。很抱歉,我认为您希望根据日期对元素进行排序,如果根据重要性进行排序:/