1 <?php 2 3 //将属于同一个类型的文章划分到同一张卡片上展示,并且保证同一张卡片上的文章在时间上连续 4 //可以先按照时间倒序取出来将文章放到同一个数组中 5 //假设下面的数组是按照时间倒序取出来的各篇文章的类型 6 7 $article_list = [‘科技‘,‘生活‘,‘互联网‘,‘互联网‘,‘大数据‘,‘人工智能‘,‘人工智能‘,‘人工智能‘,‘科技‘,‘科技‘,‘大数据‘,‘自动驾驶‘]; 8 9 //由于文章已经在时间上连续了,所以只要前一篇和后一篇是不同类型的就可以分别放在两张卡片上,可以将数组分割. 10 //这样就可以确定有几张卡片 11 12 $length = count($article_list); 13 $cut_node = array(); 14 for($i=0;$i<$length-1;$i++){ 15 if($article_list[$i] != $article_list[$i+1]){ 16 $cut_node[] = $i+1; //如果后面的文章与前面一篇类型不同就在改点切割一下数组 17 } 18 } 19 20 //将$cut_node数组的开头元素后结尾元素补齐,中间的每个元素都是切割点 21 $start_node = 0; 22 $end_node = $length; 23 array_unshift($cut_node,$start_node); 24 array_push($cut_node,$length); 25 $card = array(); 26 for($i=0;$i<(count($cut_node)-1);$i++){ 27 $offset = $cut_node[$i]; //切割时的偏移量 28 $leng = $cut_node[$i+1]-$offset; //切割长度 29 $card[] = array_slice($article_list,$offset,$leng); 30 } 31 //将所有的文章分到8张卡片中 32 print_r($card); 33 34 //分类后的结果如下 35 Array ( 36 [0] => Array ( [0] => 科技 ), 37 [1] => Array ( [0] => 生活 ), 38 [2] => Array ( [0] => 互联网, [1] => 互联网 ), 39 [3] => Array ( [0] => 大数据 ), 40 [4] => Array ( [0] => 人工智能 ,[1] => 人工智能, [2] => 人工智能 ), 41 [5] => Array ( [0] => 科技 ,[1] => 科技 ) , 42 [6] => Array ( [0] => 大数据 ) , 43 [7] => Array ( [0] => 自动驾驶 ) 44 );
时间: 2024-10-13 22:47:57