我想使用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数据库将无用。
答案 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"
);
我希望这能解决你的问题。
最诚挚的问候。