Php 检查三维数组中的所有重复值

Php 检查三维数组中的所有重复值,php,Php,我在这里看到了多维数组的一些答案,但我找不到解决问题的方法 我有这个数组,它是一个三维数组,或者任何你想叫它的东西 我需要检查所有重复的CodColaborador,并将其从阵列中删除。我在_数组中尝试了,但我认为它只适用于1级数组 有什么简单的方法可以做到吗?我在尝试,我已经在为每个人做4个了,我想那会有一个非常糟糕的表现 Array ( [0] => Array ( [0] => Array (

我在这里看到了多维数组的一些答案,但我找不到解决问题的方法

我有这个数组,它是一个三维数组,或者任何你想叫它的东西

我需要检查所有重复的
CodColaborador
,并将其从阵列中删除。我在_数组中尝试了
,但我认为它只适用于1级数组

有什么简单的方法可以做到吗?我在尝试,我已经在为每个人做4个
了,我想那会有一个非常糟糕的表现

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [CodColaborador] => 2159
                            [Nome] => Graça
                            [Sobrenome] => Almeida
                            [Ativo] => 1
                        )

                )

            [1] => Array
                (
                    [0] => Array
                        (
                            [CodColaborador] => 2159
                            [Nome] => Graça
                            [Sobrenome] => Almeida
                            [Ativo] => 1
                        )

                )

            [2] => Array
                (
                    [0] => Array
                        (
                            [CodColaborador] => 681
                            [Nome] => Gonçalo Homem
                            [Sobrenome] => de Almeida Correia
                            [Ativo] => 1
                        )

                    [1] => Array
                        (
                            [CodColaborador] => 2159
                            [Nome] => Graça
                            [Sobrenome] => Almeida
                            [Ativo] => 1
                        )

                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [CodColaborador] => 2160
                            [Nome] => Fernando
                            [Sobrenome] => Melício
                            [Ativo] => 1
                        )

                )
....................
编辑:刚刚在数组中添加了另一个级别

我需要检查所有重复的CodColaborador并将其从阵列中删除

我不知道您是否希望构建一个新的多维数组,但在我下面的代码中,我假设您的意思是将其从包含关联键的多维数组中删除

如果您有其他想法,请让我知道,或者您可以从我的解决方案中解决

尝试以下操作:

$exists = [];

foreach($array as $key => $values) {

    foreach($values as $k => $v) {

        if(in_array($v['CodColaborador'], $exists)) unset($array[$key][$k]);

        $exists[] = $v['CodColaborador'];

    }

}
本质上,我是在数组中循环,然后在该数组中的数组中循环,并将
CodColaborador
值添加到我称为
$exists
的数组中。如果该值已存在于该数组中,则表示该值是重复的,因此我将其从数组中取消设置(同样,我不确定您指的是哪个数组,但我已经按照我认为您的意思进行了设置)。

尝试此操作

$data = [];
foreach ($array as $key1 => $array1) {
    foreach ($array1 as $key2 => $array2) {
        $data[] = $array2;
    }
}

$data = array_map("unserialize", array_unique(array_map("serialize", $data)));

从技术上讲,这不是你所要求的,但如果你有一个固定的结构和顺序,你可以通过覆盖来粗略地展平和剔除重复的内容

这里只考虑一个巨大的键值对列表,循环使用name属性作为结果的键,并在每次找到一个键时更改该键

只有当子数组具有重复的键值并且它依赖于该键的唯一属性时,这才同样有效

当然,如果展平的结果不是您想要的,那么这对您没有用。不管数组嵌套得有多深

<?php
$data =
[
    [
        [
            'name' => 'John',
            'band' => 'Beatles'
        ],
        [
            'name' => 'Slash',
            'band' => 'Guns'
        ]
    ],
    [
        [
            'name' => 'Roger',
            'band' => 'Who'
        ],
        [
            'name' => 'Slash',
            'band' => 'Guns'
        ]
    ]
];

array_walk_recursive($data, function($v, $k) use (&$result, &$key)
{
    if($k === 'name')
        $key = $v;
    $result[$key][$k] = $v;
});
var_export($result);

它仍然会输出重复的值。我认为这只适用于多维数组<代码>$array=array(0=>array(),1=>array())
问题是我有两个级别的数组
$array=array(0=>array(),1=>array()),1=>array(0=>array())
我在以前的代码中犯了一个小错误,现在已经更新,应该从原始数组中删除。哦,我也注意到了,我改变了它,我认为它工作得很好,只是需要找出其他的东西,我认为它工作得很好。谢谢,伙计。不客气-如果你还需要什么,请在这里发表评论,这样我会收到通知。我犯了一个错误,我需要将他们分组到另一个级别,我会编辑我的问题预期输出是什么?另外,请显示数组的
var_export()
,而不是
print_r()
;我需要删除三层多维数组中的所有重复值。该数组有25个值,其中12个是重复的。需要从该阵列中删除这12个。
array (
  'John' => 
  array (
    'name' => 'John',
    'band' => 'Beatles',
  ),
  'Slash' => 
  array (
    'name' => 'Slash',
    'band' => 'Guns',
  ),
  'Roger' => 
  array (
    'name' => 'Roger',
    'band' => 'Who',
  ),
)