有没有什么方便的方法可以让我连接两个Doctrine ArrayCollection()
?
$collection1 = new ArrayCollection();
$collection2 = new ArrayCollection();
$collection1->add($obj1);
$collection1->add($obj2);
$collection1->add($obj3);
$collection2->add($obj4);
$collection2->add($obj5);
$collection2->add($obj6);
$collection1->concat($collection2);
// $collection1 now contains {$obj1, $obj2, $obj3, $obj4, $obj5, $obj6 }
我只想知道是否可以保存重复第二个集合,并将每个元素逐个添加到第一个集合。
谢谢你!
9条答案
按热度按时间bweufnob1#
对我来说更好(也更有效)的变体:
lyr7nygr2#
您可以简单地执行以下操作:
mwyxok5s3#
如果你需要防止任何重复,这个代码片段可能会有帮助。它使用了一个用于PHP5.6的变量函数参数。
在某些情况下可能会很方便。
hjzp0vay4#
这应该比
array_merge
快。当$collection2
中存在相同的键名时,将保留来自$collection1
的重复键名。无论实际值是什么disbfnqx5#
您仍然需要遍历集合以将一个数组的内容添加到另一个数组中。由于ArrayCollection是一个 Package 类,您可以尝试合并元素数组,同时维护键,$collection2中的数组键使用下面的helper函数覆盖$collection1中的任何现有键:
rjee0c156#
根据Yury Pliashkou的注解向数组中添加一个集合(我知道它没有直接回答最初的问题,但这个问题已经得到了回答,这可以帮助其他人登陆这里):
也许你喜欢...也许不喜欢...我只是想把它扔在那里,以防万一有人需要它。
u5i3ibmn7#
注意!避免递归元素的大型嵌套。array_unique**-**具有递归嵌入限制,并导致
PHP error Fatal error: Nesting level too deep - recursive dependency?
zzwlnbp88#
合并spread运算符以合并多个集合,例如电子表格中所有工作表中的所有行,其中$sheets和$rows都是ArrayCollections,并具有getRows():采集方式
d5vmydt99#
使用云PHP5〉5.3.0