我有一个这样的数组:
[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
)
)
基本上我只是想知道这是否可能!!
答案 0 :(得分:1)
使用isset
和array_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);
答案 1 :(得分:0)
可能是在while循环中使用for循环:
输入数组一段时间(输入数组长度> 0)
将第一个数组与Foo和Foo2复制到(最初为空)输出数组
当你找到一个时,使用for循环从第二个位置开始通过输入数组找到类似的Foo实例:
a)复制Foo2的值并将其附加到Foo2的输出数组(输出数组中的最后一个数组)。
b)使用输入数组中的重复Foo实例取消设置数组(因为它现在位于输出数组中)
然后取消设置输入数组中的第一个数组(因为所有实例现在都在输出数组中)并中断。
最后,输入数组将为空,输出数组将根据您的请求进行排序。