使用 PHP 合并另一个数组中的对象数组
Merging arrays of objects within another array with PHP
我有一个数组数组,每个 "internal" 数组包含任意数量的对象。虽然其父数组中的对象不能被复制,但在包含所有数组的 "outer" 数组中,可能会出现重复。我的目标是合并所有内部数组,以便只有一个数组没有重复项。
到目前为止,我已经尝试在循环外部数组时使用 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" 字段没有任何重复项。最好的方法是什么?任何帮助是极大的赞赏。
谢谢!
我还没有测试过这个,但我认为它应该可以工作:
$merged = [];
foreach ($outer as $inner) {
foreach ($inner as $obj) {
$id = $obj->subTestId;
if(!array_key_exists($id, $merged)) {
$merged[$id] = $obj;
}
}
}
它将使用其 subTestID 作为键将每个内部数组中的每个对象存储在 $merged
中,但前提是该键不在 $merged
.
中
我有一个数组数组,每个 "internal" 数组包含任意数量的对象。虽然其父数组中的对象不能被复制,但在包含所有数组的 "outer" 数组中,可能会出现重复。我的目标是合并所有内部数组,以便只有一个数组没有重复项。
到目前为止,我已经尝试在循环外部数组时使用 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" 字段没有任何重复项。最好的方法是什么?任何帮助是极大的赞赏。
谢谢!
我还没有测试过这个,但我认为它应该可以工作:
$merged = [];
foreach ($outer as $inner) {
foreach ($inner as $obj) {
$id = $obj->subTestId;
if(!array_key_exists($id, $merged)) {
$merged[$id] = $obj;
}
}
}
它将使用其 subTestID 作为键将每个内部数组中的每个对象存储在 $merged
中,但前提是该键不在 $merged
.