牛骨文教育服务平台(让学习变的简单)
博文笔记

二维数组进行排序并且合并

创建时间:2018-02-08 投稿人: 浏览次数:185

之前项目要到一个这样的需求:

表结构:

我这边想实现一个 列表显示:某个时间下的(grouo_time年月日)哪位大咖(作者did)发表了哪些文章,合并到一起产品原型憋了很长时间,因为前期产品不固定,就让我们这群程序员开始写,写着写着需求又变了然后各种修改 ,搞的自己都开始怀疑人生了。

laravel+ORM(mongodb)

第一步:


打印的结果如下:


第二步:

  $article_sort = self::initArray($group_time); 对当前的数组进行整理

public static function initArray(array $array)
    {
        $newArray = [];
        foreach ($array as $item) {
            if (isset($newArray[$item["group_time"]])) {
                $newArray[$item["group_time"]]["list"][] = ["title"=>$item["article_title"],"introduction_first"=>$item["introduction_first"],"editor_url"=>$item["editor_url"],  "covers_url"=>$item["covers_url"],"add_time"=>$item["add_time"]];
            } else {
                $arrays = [
                    "title"=>$item["article_title"],
                    "introduction_first"=>$item["introduction_first"],//导言1
                    "editor_url"=>$item["editor_url"],//编辑上传图片
                    "covers_url"=>$item["covers_url"],//编辑上传图片
                    "add_time"=>$item["add_time"]//编辑上传图片
                ];
                $newArray[$item["group_time"]] = ["group_time" => date("Y-m-d",$item["group_time"]),"nickname"=>$item["dern_info"]["nickname"],"avatar"=>$item["dern_info"]["avatar"],"did"=>$item["did"], "list" => [$arrays]];
//                dd($newArray);
            }
        }
        return $newArray;
    }

另一种转换方法:

我用的上面哪个,主要下面这种写法看起来怪怪的
function initArray(array $array)
{
     $newArray = [];
        array_map(function ($item) use(&$newArray){
            if (isset($newArray[$item["group_time"]])) {
                $newArray[$item["group_time"]]["did"][] = $item["did"];
            } else {
                $newArray[$item["group_time"]] = ["group_time" => $item["group_time"], "did" => [$item["did"]]];
            }
        },$array);
        return $newArray;
}


最后打印article_sort 就是我们最终实现的效果了:


这里面很多地方值得优化,这边只是做了一个简单的demo。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。