【十四】

需求:以objid以日期为间隔,使用json格式打印出来

 =》(变成)

方法一:

 1 <?php
 2         $arr = array(
 3             0=>array("dataname"=>"2017-08-08","objID"=>"11"),
 4             1=>array("dataname"=>"2017-08-08","objID"=>"12"),
 5             2=>array("dataname"=>"2017-08-08","objID"=>"13"),
 6             3=>array("dataname"=>"2017-08-09","objID"=>"14"),
 7             4=>array("dataname"=>"2017-08-09","objID"=>"15"),
 8             5=>array("dataname"=>"2017-08-09","objID"=>"16"),
 9             6=>array("dataname"=>"2017-08-10","objID"=>"17"),
10             7=>array("dataname"=>"2017-08-10","objID"=>"18"),
11             8=>array("dataname"=>"2017-08-10","objID"=>"19"),
12             9=>array("dataname"=>"2017-08-11","objID"=>"20"),
13             10=>array("dataname"=>"2017-08-11","objID"=>"21"),
14             11=>array("dataname"=>"2017-08-11","objID"=>"22")
15         );
16         //思路
17         //1.新建一个空数组
18         //2.便利老数组
19         //3.判断老数组的dataname值在新数组是否存在
20         //如果不存在则在新数组新建dataname及objid值。
21         //如果存在则去判断对应的objid值在新数组,记录最后一次出现的位置,如果为false,则往对应的dataname下添加objid值
22         $arr1=[];
23         foreach ($arr as $k => $v) {
24             if (array_key_exists($v["dataname"],$arr1)) {
25                 //strpos:查找“$v['objID']”在“$arr1[$v['dataname']]['objID']”中最后一次出现的位置
26                 $res=strpos($arr1[$v['dataname']]['objID'],$v['objID']);
27                 if ($res===false) {
28                     $arr1[$v['dataname']]['objID'].=",".$v['objID'];
29                 }
30             }else{
31                 $arr1[$v['dataname']]['objID']=$arr[$k]['objID'];
32             }
33         }
34         var_dump($arr1);
35 ?>

结果:

方法二:

 1 <?php
 2 $arr = array(
 3     0=>array("dataname"=>"2017-08-08","objID"=>"11"),
 4     1=>array("dataname"=>"2017-08-08","objID"=>"12"),
 5     2=>array("dataname"=>"2017-08-08","objID"=>"13"),
 6     3=>array("dataname"=>"2017-08-09","objID"=>"14"),
 7     4=>array("dataname"=>"2017-08-09","objID"=>"15"),
 8     5=>array("dataname"=>"2017-08-09","objID"=>"16"),
 9     6=>array("dataname"=>"2017-08-10","objID"=>"17"),
10     7=>array("dataname"=>"2017-08-10","objID"=>"18"),
11     8=>array("dataname"=>"2017-08-10","objID"=>"19"),
12     9=>array("dataname"=>"2017-08-11","objID"=>"20"),
13     10=>array("dataname"=>"2017-08-11","objID"=>"21"),
14     11=>array("dataname"=>"2017-08-11","objID"=>"22")
15 );
16     // 思路:
17     // 1.先新建2个空数组
18     // 2.先判断老数组的$i是否等于1
19     // 等于1,在数组1添加该objid值。且数组2[‘dataname’]等于数组1
20     // 不等于1,则判断老数组的$i-1行的dataname值是否与$i值相等
21     // 如果相等,则在对应的dataname下添加对应的objid值
22     // 如果不相等,则代表在该dataname下,无objid(新建objid值)
23     $temp=array();
24     for ($i=0; $i <count($arr) ; $i++) { 
25         $dataname=$arr[$i]['dataname'];
26         $objID=$arr[$i]['objID'];
27         if ($i==0) 
28         {
29             $temp['objID']=$objID;        
30         }else
31         {
32             $lastDataname=$arr[$i-1]['dataname'];
33             if ($dataname==$lastDataname) 
34             {
35                 $temp['objID']=$temp['objID'].",".$objID;
36             }else{
37                 $temp['objID']=$objID;
38             }
39         }
40         $arr2[$dataname]=$temp;
41     }
42     var_dump($arr2);
43 ?>

结果:

原文地址:https://www.cnblogs.com/8013-cmf/p/7831058.html