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

时间:2015-01-06 12:37:52

标签: php mysql arrays

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

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获取电子邮件数组以删除重复的条目。但是,它将删除的条目也必须在其他数组中删除。所以在电子邮件数组中的这个例子中,array_unique函数将删除[3]。然后我想删除网站中的[3]并命名数组,但我不知道如何做到这一点......

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

2 个答案:

答案 0 :(得分:0)

$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"
}

答案 1 :(得分:0)

让我们先连接所有三个数组,创建一个干净的DRY代码:

$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"
);

我希望这能解决你的问题。

最诚挚的问候。