Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何删除foreach循环中的doubles元素并将日期分配给原始循环?_Php_Arrays_Loops_Multidimensional Array_Foreach - Fatal编程技术网

Php 如何删除foreach循环中的doubles元素并将日期分配给原始循环?

Php 如何删除foreach循环中的doubles元素并将日期分配给原始循环?,php,arrays,loops,multidimensional-array,foreach,Php,Arrays,Loops,Multidimensional Array,Foreach,我试图得到的是删除Rest字段中的重复值,但我希望将其日期指定/保留为原始值。要素: array (size=413) 0 => array (size=5) 'Date' => array (size=1) 0 => int 1588520980 'Rest' => 123abc 1 => array (size=5) 'Date' =>

我试图得到的是删除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);

谢谢对于聪明的解决方案,我甚至没有考虑创建第二个数组,这是一个遥遥领先的解决方案!请随意接受并有选择地投票选出有帮助的答案。