如何删除foreach循环中的doubles元素并保留指定给原始日期



我试图删除Rest字段中的重复值,但我希望将其日期分配/保持为原始值。元素:

array (size=413)
0 => 
array (size=5)
'Date' => 
array (size=1)
0 => int 1588520980
'Rest' => 123abc
1 => 
array (size=5)
'Date' => 
array (size=1)
0 => int 1588520981
'Rest' => qwe123
2 => 
array (size=5)
'Date' => 
array (size=1)
0 => int 1588520983
'Rest' => qwe123

我试过了,但不起作用

public function find_repeats($arr)
{
foreach(array_column($arr, 'Rest') as $ckey=>$value) {
$keys = array_reverse(array_keys(array_column($arr, 'Rest'), $value));
foreach ($keys as $v) {
if ($ckey != $v && isset($arr[$v]))
{
$arr[$ckey]['Date'][] = $arr[$v]['Date'][0];
unset($arr[$v]);
}
}
}
return $arr;
}

这就是操作后的表格应该是什么样子

array (size=413)
0 => 
array (size=5)
'Date' => 
array (size=1)
0 => int 1588520980
'Rest' => 123abc
1 => 
array (size=5)
'Date' => 
array (size=1)
0 => int 1588520981
1 => int 1588520983
'Rest' => qwe123

谢谢你的帮助!:(

没有所有这些堆叠函数的简单解决方案:

$newData = [];
foreach ($arr as $item) {
$rest = $item['Rest'];
if (!isset($newData[$rest])) {
$newData[$rest] = $item;
} else {
$newData[$rest]['Date'][] = $item['Date'][0];
}
}
// optionally apply array_values to get 0-indexed array:
$newData = array_values($newData);

最新更新