zoukankan      html  css  js  c++  java
  • 包含ABC的随机数组整理

    【需求】二维数组中存了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);
  • 相关阅读:
    Navicat 导入数据报错 --- 1153
    VS2015创建的Asp.net WebApi默认项目在CentOS7+Mono4.2.2+jexus5.8运行不起来的解决方案
    CentOS 6.5安装MySQL中文乱码问题解决
    Centos上Apache重启,mysql重启, nginx 重启方法
    linux自己带的apache重新启动
    CentOS Linux系统下更改Apache默认网站目录
    C语言王国探秘一
    《JavaScript权威指南》学习笔记 第一天。
    《JavaScript权威指南》学习笔记 第二天 下好一盘大棋
    Js里面的强制类型转换
  • 原文地址:https://www.cnblogs.com/junxu/p/5142848.html
Copyright © 2011-2022 走看看