如何解决处理对象数组时如何避免循环中的array_merge
围绕'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']);
}
解决方法
您可以使用$arraysToMerge
上的array_column()函数来获得$users
,如下所示:
$arraysToMerge = array_column($users,'socialMediaAccounts');
$arraysMerged = array_merge(...$arraysToMerge);
Matt建议您不需要合并为空数组,因此我根据他的建议修改了代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。