PHP搜索重复值的多维数组

时间:2016-08-25 19:21:51

标签: php arrays multidimensional-array

我有一个这样的数组:

[0] => Array
    (
        [0] => Array
            (
                [Foo] => Bar
                [Foo2] => String1
            )

    )

[1] => Array
    (
        [0] => Array
            (
                [Foo] => Bar
                [Foo2] => String2
            )

    )

虽然与我合作的人要大得多,但这是它的一般形式。我试图查看相对于Foo的每个值,如果其中一个数组中有重复,则取下一个Foo2值并将其“推”到一个新数组,基本上看起来像这样:

[0] => Array
    (
    [0] => Array
        (
            [Foo] => Bar
                [Foo2] => String1,
                           String2 
        )

)

基本上我只是想知道这是否可能!!

2 个答案:

答案 0 :(得分:1)

使用issetarray_values函数的解决方案:

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

DEMO link

答案 1 :(得分:0)

可能是在while循环中使用for循环:

输入数组一段时间(输入数组长度> 0)

将第一个数组与Foo和Foo2复制到(最初为空)输出数组

当你找到一个时,使用for循环从第二个位置开始通过输入数组找到类似的Foo实例:

a)复制Foo2的值并将其附加到Foo2的输出数组(输出数组中的最后一个数组)。

b)使用输入数组中的重复Foo实例取消设置数组(因为它现在位于输出数组中)

然后取消设置输入数组中的第一个数组(因为所有实例现在都在输出数组中)并中断。

最后,输入数组将为空,输出数组将根据您的请求进行排序。

相关问题