• 包含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);
  • 相关阅读:
    一些C++11语言新特性
    项目管理计划应该包括哪些内容
    真相令人震惊!为什么越有钱的人,欠的钱越多?
    80后小伙返乡创业种植中药材,带领乡亲们脱贫致富
    Tableau
    知识点汇总
    决策树分析、EMV(期望货币值)
    信息系统项目管理师60天冲刺复习计划,2019下半年高项冲刺计划
    【系统分析师之路】系统分析师备考计划
    有一种规律:“劣币驱逐良币”,“坏人淘汰好人”(深度)
  • 原文地址:https://www.cnblogs.com/junxu/p/5142848.html
Copyright © 2020-2023  润新知