1. 程式人生 > >php中使用array_slice將數組中的元素分類

php中使用array_slice將數組中的元素分類

使用 spa sta star span set 都是 連續 屬於

 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 );

php中使用array_slice將數組中的元素分類