首页 > 编程语言 > 详细

二维数组整理一个小例子

时间:2016-01-19 18:51:20      阅读:124      评论:0      收藏:0      [点我收藏+]

【需求】二维数组中存了N组数组,每个数组的键值是title(A),desc(B),photo(C),将其按照ABC三个一组整理成新的二维数组。需考虑因后台配置的数据导致的各种特色情况。数据如下:

 1 //正常情况ABC
 2 $abc= array(
 3     0=>array("title" => "珍珠泉",),
 4     1=>array( "desc" => "珍珠泉好玩",),
 5     2=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
 6     );
 7 //正常情况ABCABC
 8 $abcabc = array(
 9     0=>array("title" => "珍珠泉",),
10     1=>array( "desc" => "珍珠泉好玩",),
11     2=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
12     3=>array("title" => "九华山",),
13     4=>array( "desc" => "佛教圣地",),
14     5=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
15     );
16 //特殊情况A
17 $a = array(
18     0=>array("title" => "珍珠泉",),
19     );
20 //特殊情况AABC
21 $aabc = array(
22     0=>array("title" => "珍珠泉",),
23     1=>array("title" => "九华山",),
24     2=>array( "desc" => "佛教圣地",),
25     3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
26     );
27 //特殊情况ACBC
28 $acbc = array(
29     0=>array("title" => "珍珠泉",),
30     1=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
31     2=>array( "desc" => "佛教圣地",),
32     3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
33     );
34 //特殊情况ABBC
35 $abbc =array(
36     0=>array("title" => "珍珠泉",),
37     1=>array( "desc" => "珍珠泉好玩",),
38     2=>array( "desc" => "佛教圣地",),
39     3=>array("photo" => "http://pic3.40017.cn/scenery/destination/2015/06/11/10/cgXhiS_540x304_00.jpg",),
40     );

要实现的效果如下:

整理前      整理后

ABC      [ABC]

ABCABC    [ABC][ABC]

A        [A]

AABC      [A][ABC]

ACBC      [AC][BC]

ABBC      [AB`C]

【思路】建立一个数据组单位temp,该单位默认包含一个title、desc和photo,遍历待整理的数组,发现key为title时先把temp数组保存到returnData数组,再新建一个temp,并把title插入temp数组;发现photo数组后,将photo插入temp数组,temp数组保存到返回returnData数组,再新建一个新的temp数组。对于可能出现的连续desc,通过换行符将它们拼装成一个新的desc并插入temp

【代码】

 1     foreach($a as $value){
 2             if(!isset($value[‘title‘])){
 3                 //标题正文模块
 4                 if(isset($value[‘desc‘]) && !empty($value[‘desc‘])){
 5                     //多个标题正文的情况
 6                     if(isset($temp[‘desc‘]) && !empty($temp[‘desc‘])){
 7                         $temp[‘desc‘] = $temp[‘desc‘].PHP_EOL.$value[‘desc‘];
 8                     }else{
 9                         $temp[‘desc‘] .= $value[‘desc‘];
10                     }
11                 }else{
12                     //图片模块,出现图片说明了一个数据组的结束
13                     $temp[‘photo‘] = $value[‘photo‘];
14                     if(!empty($temp)){
15                         $returnData[] = $temp;
16                     }
17                     $temp = array();
18                 }
19             }
20             else{
21                 //标题模块,出现标题说明一个数据组的开始
22                 if(!empty($temp)){
23                     $returnData[] = $temp;
24                 }
25                 $temp = array();
26                 $temp[‘title‘] = $value[‘title‘] ;
27             }
28         }
29         if(!empty($temp)){
30             $returnData[] = $temp;
31         }
32        var_dump($returnData);

 

二维数组整理一个小例子

原文:http://www.cnblogs.com/junxu/p/5142848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!