数据格式:$data = [
[ 'id'=>'a8856', 'date'=>'20100612'
],
[ 'id'=>'a8856', 'date'=>'20180102'
],
[ 'id'=>'top856', 'date'=>'20100612'
],
[ 'id'=>'c8236', 'date'=>'20100612'
],
[ 'id'=>'e2569', 'date'=>'20010612'
],
[ 'id'=>'e2569', 'date'=>'20150825'
]
];寻求帮助:上述数组中id值可能重复,但date值唯一,我想去重重复项,保留日期最新记录,例如:2个id都是e2569,但date一个是2001的另一个是2015的,就删除2001这一条,保留2015这条记录,可能会有多个id重复的值。在线几等、、、求demo谢谢,或者内置函数有能解决此问题的吗?
2 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
foreach($data as $v){ if(!isset($arr[$v['id']])){ $arr[$v['id']] = $v; }elseif($arr[$v['id']]['date'] < $v['date']){ $arr[$v['id']]['date'] = $v['date']; } } $new = array_values($arr);
FFIVE
TA贡献1797条经验 获得超6个赞
比较笨
usort( $data,function($a1,$a2){return $a1['date']>$a2['date'];} );
$result=array_combine(array_column($data,'id'),array_column ( $data,'date'));
$result=array_map(function($m,$n){return ['id'=>$m,'date'=>$n];},array_keys($result),array_values($result));
var_dump($result);
- 2 回答
- 0 关注
- 681 浏览
添加回答
举报
0/150
提交
取消