Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 从嵌套数组中删除重复的值_Php_Arrays_Multidimensional Array - Fatal编程技术网

Php 从嵌套数组中删除重复的值

Php 从嵌套数组中删除重复的值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我正在让堆栈删除重复的键,并将它们分配给一个新数组 我的阵列: array ( [1] => Array ( [name] => name1 [actions] => add ) [2] => Array (

我正在让堆栈删除重复的键,并将它们分配给一个新数组

我的阵列:

  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
                    ) 

            )
我正在努力实现的目标:

  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);
}

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

您不能有两个带有保存值的数组键(所以对于给定元素不可能有两个actions元素),您可以做的是有一个包含多个值的action元素

  $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);

工作就像一个魅力,你是一个明星