您的位置:首页 > 其它

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

2018-02-08 10:49 148 查看
之前项目要到一个这样的需求:
表结构:


我这边想实现一个 列表显示:某个时间下的(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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐