二维数组进行排序并且合并
之前项目要到一个这样的需求:
表结构:
我这边想实现一个 列表显示:某个时间下的(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 就是我们最终实现的效果了:
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇: laravel实现搜索分页
