如何删除条目 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"
);
希望这能解决您的问题。
此致。
我想使用 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"
);
希望这能解决您的问题。
此致。