php - 如何删除 foreach 循环中的双精度元素并保持分配给原始日期的日期?
问题描述
我想要得到的是删除 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);
推荐阅读
- php - 如何解决这个错误 phpunit/phpunit-mock-objects 包被废弃,你应该避免使用它。没有建议更换
- java - 资源类和空参数
- mongodb - 为什么我的 mongodb 查询返回 0 个结果?
- reactjs - 使用 react-bootstrap 在 NavDropdown 标题内输入字段块空间
- dart - 为什么 Flutter-test 在以下情况下不渲染 Text 小部件?
- java - JavaFX 用更少的代码检测按钮点击
- forms - 在 Xamarin Forms TabbedPages 中创建覆盖
- java - 实现具有排序方向的 Spring Data 存储库
- java - 创建匿名类时,无论是抽象类还是具体类,我都必须包含扩展类的方法吗?
- javascript - 这个未知错误来自哪里以及如何防止它?