• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

php中使用array_slice将数组中的元素分类

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 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 );

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
用php输出心形曲线发布时间:2022-07-10
下一篇:
PHP随机函数【上】发布时间:2022-07-10
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap