Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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,我有这样一个数组: [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您应该发布您的答案。可能是这样的吗?除非您提供更多的示例数据(以及所需的输出),否则无法确定这是您想要的。很抱歉,缺少代码示例,我的手机无法配合