首页 > 解决方案 > 通过电子邮件删除重复的数组值

问题描述

根据电子邮件地址字段从我的输出中删除任何重复行的最佳方法是什么?

我尝试过使用, array_unique但是它删除了太多的电子邮件。

输出数组:

$guestOutput[] = [

                    'firstName' => $guest->guestFirstName,
                    'lastName' => $guest->guestLastName,
                    'email' => $guest->guestEmail,
                ];

数组示例:

  [0]=>
  array(3) {
    ["firstName"]=>
    string(5) "T"
    ["lastName"]=>
    string(6) "B"
    ["email"]=>
    string(21) "glh@gmail.com"
  }
  [1]=>
  array(3) {
    ["firstName"]=>
    string(5) "L"
    ["lastName"]=>
    string(7) "Kr"
    ["email"]=>
    string(23) "email1@gmail.com"
  }

我的最终目标是创建一个 CSV 文件:)

标签: phparrays

解决方案


如果您使用循环添加详细信息(这是我假设您当前的代码正在执行的操作),一种简单的方法是$guestOutput按电子邮件地址索引。因此,当您添加新的详细信息时,您只会覆盖以前的详细信息...

$guestOutput[$guest->guestEmail] = [
                    'firstName' => $guest->guestFirstName,
                    'lastName' => $guest->guestLastName,
                    'email' => $guest->guestEmail,
                ];

如果您不需要循环结束时的索引,则可以使用:

$guestOutput = array_values($guestOutput);

推荐阅读