我有一个数组数组,每个数组都是"内部"包含任意数量对象的数组。虽然其父数组中的任何对象都不能复制,但在"外部"包含所有数组的数组,可能会发生重复。我的目标是合并所有内部数组,以便只有一个数组没有重复。
到目前为止,我已经尝试在循环外部数组时使用array_merge和array_merge_recursive,但这并没有成功。我不确定我是否会非常清楚地解释这一点,但这是可以做到的吗?
这里有一个var_dump作为初始数组的一个例子:
array (size=4)
27 =>
array (size=4)
0 =>
object(stdClass)[75]
public 'subTestId' => string '1' (length=1)
public 'testMakerTestId' => null
1 =>
object(stdClass)[76]
public 'testMakerTestId' => string '5844' (length=4)
2 =>
object(stdClass)[77]
public 'subTestId' => string '23' (length=2)
3 =>
object(stdClass)[78]
public 'subTestId' => string '12' (length=2)
24 =>
array (size=3)
0 =>
object(stdClass)[79]
public 'subTestId' => null
1 =>
object(stdClass)[80]
public 'subTestId' => null
2 =>
object(stdClass)[81]
public 'subTestId' => string '12' (length=2)
1 =>
array (size=1)
0 =>
object(stdClass)[82]
public 'subTestId' => string '23' (length=2)
25 =>
array (size=1)
0 =>
object(stdClass)[83]
public 'subTestId' => string '23' (length=2)
我想将它们全部合并,并且没有任何重复的" subTestId"领域。最好的方法是什么?任何帮助是极大的赞赏。
谢谢!
答案 0 :(得分:1)
我还没有对此进行测试,但我认为它应该可行:
OutputStream
它将使用其subTestID作为键存储来自$merged = [];
foreach ($outer as $inner) {
foreach ($inner as $obj) {
$id = $obj->subTestId;
if(!array_key_exists($id, $merged)) {
$merged[$id] = $obj;
}
}
}
中每个内部数组的每个对象,但前提是该密钥不在$merged
中。