PHP在多维数组中搜索重复值
我有这样一个数组:PHP在多维数组中搜索重复值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样一个数组: [0] => Array ( [0] => Array ( [Foo] => Bar [Foo2] => String1 ) ) [1] => Array ( [0] => Array ( [Foo] => B
[0] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String1
)
)
[1] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String2
)
)
[0] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String1,
String2
)
)
虽然我正在使用的那个要大得多,但这是它的一般形式。我试图查看与Foo相关的每个值,如果其中一个数组中存在重复,则获取后续的Foo2值并将其“推”到一个新数组,基本上如下所示:
[0] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String1
)
)
[1] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String2
)
)
[0] => Array
(
[0] => Array
(
[Foo] => Bar
[Foo2] => String1,
String2
)
)
基本上我只是想知道这是否可能 一种可能性是在while循环中使用for循环: 用一段时间遍历输入数组(当输入数组长度>0时) 将带有Foo和Foo2的第一个数组复制到(最初为空)输出数组中 使用for循环从第二个位置开始遍历输入数组,以查找Foo的类似实例(当您找到一个实例时): a) 复制Foo2的值并将其附加到Foo2处的输出数组(输出数组中的最后一个数组) b) 使用输入数组中的重复Foo实例取消设置该数组(因为它现在位于输出数组中) 然后取消设置输入数组中的第一个数组(因为所有实例现在都在输出数组中)并中断
最后,输入数组将为空,输出数组将根据您的请求进行排序。使用
isset
和array\u值
功能的解决方案:
$grouped = [];
foreach ($arr as $v) { // $arr is your initial array
$foo = $v[0]['Foo'];
if (!isset($grouped[$foo])) {
$grouped[$foo] = $v[0];
} else {
$grouped[$foo]['Foo2'] .= "," . $v[0]['Foo2'];
}
}
$result = array_values($grouped);
print_r($result);
是的,这是可能的。您显示的结果数组是不可能的-关联数组不能有相同的键我编辑过它,这就是我的意思-@CharlotteDunois您应该发布您的答案。可能是这样的吗?除非您提供更多的示例数据(以及所需的输出),否则无法确定这是您想要的。很抱歉,缺少代码示例,我的手机无法配合