使用 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.