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',
),
)