【十四】
需求:以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 ?>
结果: