如何删除 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

感谢帮助!:)


天涯尽头无女友
浏览 88回答 1
1回答

ITMISS

没有所有这些堆叠功能的简单解决方案:$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);
打开App,查看更多内容
随时随地看视频慕课网APP