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

 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

php中使用array_slice将数组中的元素分类的相关文章

用C随机产生的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。

用 C 求一组随机数的第二大值,不能通过对整体排序求得 1 随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值.最小值.平均值以及各元素之和,及第二大值.        int a[20];    int sum = 0; //存储数组元素的和    //为数组赋值    printf("数组中的元素为:\n ");    for (int i = 0; i < 20; i ++) {        a[i] = arc4random() % 41 +

在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index

在angular中使用ng-repeat时数组中有重复元素,要用item in items track by $index,不然会报错 <div class="" ng-init="names=[1,2,3,4,5,5]"> <p>循环对象:</p> <ul> <li ng-repeat="x in names track by $index"> {{ x }}</li> &

array_slice 从数组中取值

rray_slice() 函数在数组中根据条件取出一段值,并返回. 注释:如果数组有字符串键,所返回的数组将保留键名.(参见例子 4) 语法 array_slice(array,offset,length,preserve) 参数 描述 array 必需.规定输入的数组. offset 必需.数值.规定取出元素的开始位置. 如果是正数,则从前往后开始取,如果是负值,从后向前取 offset 绝对值. length 可选.数值.规定被返回数组的长度. 如果 length 为正,则返回该数量的元素.

(实用篇)PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。

int a[20] = {0};//定义一个长度为20的数组a int max = 0;//用来存储数组a中所有元素的最大值 int min = 0;//用来存储数组a中所有元素的最小值 int sum = 0;//用来存储数组a各元素的和 float aver = 0.0;//用来存储数组a中所有元素的平均值 int secondMax = 0;//用来存储数组a的第二大值,第二大值 为 不同于最大值的剩余元素的最大值 for (int i = 0; i < 20; i++) {//用来循环获

PHP中unset,array_splice删除数组中元素的区别

php中删除数组元素是非常的简单的,但有时删除数组需要对索引进行一些排序要求我们会使用到相关的函数,这里我们来介绍使用unset,array_splice删除数组中的元素区别吧 如果要在某个数组中删除一个元素,可以直接用的unset,但是数组的索引不会重排: <?php $arr = array('a','b','c','d'); unset($arr[1]); print_r($arr); ?> 结果是: Array ( [0] => a [2] => c [3] => d

JS中split用法和数组中元素的删除

JS中split用法 <script language="javascript"> function spli(){ datastr="2,2,3,5,6,6"; var str= new Array(); str=datastr.split(","); for (i=0;i<str.length ;i++ ) { document.write(str[i]+"<br/>"); } } spli(

java中如何高效判断数组中是否包含某个特定的值

四种不同方式检查数组是否包含某个值 使用List: public static boolean useList(String[] arr, String targetValue) { return Arrays.asList(arr).contains(targetValue); } 使用Set: public static boolean useSet(String[] arr, String targetValue) { Set<String> set = new HashSet<S

在Java中如何高效判断数组中是否包含某个元素

如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作.同时,这个问题在Stack Overflow中也是一个非常热门的问题.在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的.本文将分析几种常见用法及其时间成本. 检查数组是否包含某个值的方法 使用List public static boolean useList(String[] arr, String targetValue) { return Arrays.asLis