如何删除条目 PHP 数组并从其他数组中删除这些条目?

How to remove entries PHP array and also remove those entries from other arrays?

我想使用 array_unique 删除 PHP 数组中的重复项。但是我有 3 个三个不同的数组:名称、电子邮件和网站。

Names

Array
(
    [0] => Blabla Company
    [1] => Lawyer
    [2] => Plumber
    [3] => Plumber
)

Websites

Array
(
    [0] => Blabla.com
    [1] => Lawyer.com
    [2] => Plumber.com
    [3] => 
)

Emails

Array
(
    [0] => info@Blabla.com
    [1] => info@Lawyer.com
    [2] => info@Plumber.com
    [3] => info@Plumber.com
)

我想做的是让 array_unique 取 email 数组来删除重复的条目。但是,它将删除的条目也必须在其他数组中删除。所以在这个例子中,在电子邮件数组中,array_unique 函数将删除 [3]。然后我想删除网站和名称数组中的 [3],但我不知道如何执行此操作...

我想这样做的原因是因为我将使用数组作为 SQL 插入查询的输入。否则数组不再匹配,sql 数据库将无用。

$name = array('Blabla Company','Plumber','Lawyer','Plumber','Foo');
$site = array('Blabla.com','Plumber.com','Lawyer.com','','foo.com');
$email = array('info@Blabla.com','info@Plumber.com','info@Lawyer.com','info@Plumber.com','foo@bar.com');

$email = array_unique($email);
$name = array_intersect_key($name, $email);
$site = array_intersect_key($site, $email);

var_dump($email, $name, $site);

输出:

array(4) {
  [0]=>
  string(15) "info@Blabla.com"
  [1]=>
  string(16) "info@Plumber.com"
  [2]=>
  string(15) "info@Lawyer.com"
  [4]=>
  string(11) "foo@bar.com"
}
array(4) {
  [0]=>
  string(14) "Blabla Company"
  [1]=>
  string(7) "Plumber"
  [2]=>
  string(6) "Lawyer"
  [4]=>
  string(3) "Foo"
}
array(4) {
  [0]=>
  string(10) "Blabla.com"
  [1]=>
  string(11) "Plumber.com"
  [2]=>
  string(10) "Lawyer.com"
  [4]=>
  string(7) "foo.com"
}

让我们首先加入所有三个数组,以创建干净且干燥的代码:

$arrays = array(&$emails, &$names, &$websites);
//Notice that I used the variables' references so I can modify them directly.

现在,让我们在每个数组变量中使用 array_unique。

foreach ($arrays as $id => $array)
{
    $arrays[$id] = array_unique($array);
}

您的方法(使用电子邮件数组的非唯一值从名称和网站数组中删除值)是不必要的。通过查看您提供的数组,您可以像我上面那样在每个数组中简单地使用 array_unique 函数。

此外,最佳做法是将用户数据放在同一个数组中。 示例:

$user = array(
    "name"    => "John Doe",
    "email"   => "John@example.com",
    "website" => "example.com"
);

希望这能解决您的问题。

此致。