猿问

PHP 二维数组去重问题求指教,有内置函数吗?

数据格式:

$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谢谢,或者内置函数有能解决此问题的吗?


慕丝7291255
浏览 683回答 2
2回答

人到中年有点甜

foreach($data&nbsp;as&nbsp;$v){&nbsp;&nbsp;&nbsp;&nbsp;if(!isset($arr[$v['id']])){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr[$v['id']]&nbsp;=&nbsp;$v; &nbsp;&nbsp;&nbsp;&nbsp;}elseif($arr[$v['id']]['date']&nbsp;<&nbsp;$v['date']){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$arr[$v['id']]['date']&nbsp;=&nbsp;$v['date']; &nbsp;&nbsp;&nbsp;&nbsp;} } $new&nbsp;=&nbsp;array_values($arr);

FFIVE

比较笨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);
随时随地看视频慕课网APP
我要回答