处理对象数组时如何避免循环中的array_merge

How to avoid array_merge in loops when dealing with array of objects

围绕'array_merge(...)' is used in a loop and is a resources greedy construction.

有很多讨论

对于简单的数组,有一个使用展开运算符的简单解决方案。例如

$arraysToMerge = [ [1, 2], [2, 3], [5,8] ];
$arraysMerged = array_merge([], ...$arraysToMerge);

但是,我的问题是在以下情况下我找不到避免它的方法:

假设您有一个用户列表,并且每次使用都有多个社交媒体帐户。

您将如何创建一个包含所有用户的所有社交媒体帐户的数组? 我找到的唯一解决方案是这样的:

$allSocialMediaAccounts= [];
foreach ($users as $user) {
    $allSocialMediaAccounts= array_merge($accounts, $user['socialMediaAccounts']);
}

您可以使用 $users 上的 array_column() 函数获得 $arraysToMerge,如下所示:

$arraysToMerge = array_column($users, 'socialMediaAccounts');
$arraysMerged  = array_merge(...$arraysToMerge);

Matt建议不需要合并成一个空数组,所以我根据他的建议修改了代码。