0

我正在获取堆栈删除重复键并将它们分配给一个新数组。

我的数组:

  array     (
            [1] => Array
                (
                    [name] => name1
                    [actions] => add
                )

            [2] => Array
                (
                    [name] => name1
                    [actions] => remove
                )

            [3] => Array
                (
                    [name] => name2
                    [actions] => dosomething1
                )
            [4] => Array
                (
                    [name] => name2
                    [actions] => dosomething1
                )

        )

我想要达到的目标:

 array    (
                [1] => Array
                    (
                        [name] => name1
                        [actions] => add
                        [actions] => remove
                    )         
                [2] => Array
                    (
                        [name] => name2
                        [actions] => dosomething1
                        [actions] => dosomething1
                    ) 

            )

我试过的:

    public function array_unique_multidimensional($input)
{
    $serialized = array_map('serialize', $input);
    $unique = array_unique($serialized);
    return array_intersect_key($input, $unique);
}

它错误地返回相同的数组。任何帮助,将不胜感激。

4

1 回答 1

1

您不能有两个带有保存值的数组键(因此给定元素的两个操作元素是不可能的)您可以做的是有一个包含多个值的单个操作元素。

  $results = array();
  foreach ($array as $v){
      if (!isset($results[$v["name"]]){
           $results[$v["name"]] = array("name"=>$v["name"], "actions"=>array($v["actions"]));
      } else {
          $results[$v["name"]]["actions"][] = $v["actions"];
      }
  }

如果你想删除顶级数组上的字符串键,你可以这样做。

 $results = array_values($results);
于 2013-07-12T16:00:52.333 回答