二维数组进行排序并且合并
之前项目要到一个这样的需求:
表结构:
我这边想实现一个 列表显示:某个时间下的(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 就是我们最终实现的效果了:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 将session放到memcache上面
- 下一篇: php 多维数组按数组的某一字段排序 数组排序