我有两个名为 行和联系人 的数组。
第一个数组 行 就像:
Array
(
[0] => email@gmail.com
[1] => test@gmail.com
[2] => tester@gmail.com
[3] => vin@gmail.com
)
第二个阵列 联系人 如下:
Array
(
[test@gmail.com] => test@gmail.com
[ram@gmail.com] => Ram
[vin@gmail.com] => Vinay
[man_test@yahoo.com] => Manoj
[homan@rediffmail.com] => Homan
)
我想要的是 联系人 数组:
Array
(
[ram@gmail.com] => Ram
[man_test@yahoo.com] => Manoj
[homan@rediffmail.com] => Homan
)
我尝试了一些函数,比如 array_diff(),array_keys()等,但它们没有给我所需的输出,可能是我无法正确使用它们....!< / p>
我不想为此目的使用循环,因为给定的数组只是样本数据,但实际上它们非常庞大。
请帮助.....
先谢谢.....
答案 0 :(得分:3)
另一种方式:
$contacts = array_diff_key($contacts, array_flip($rows));
答案 1 :(得分:2)
foreach ($contacts as $email => $name) {
if (!in_array($email, $rows)) {
$contact[$email] = $name;
}
}
新数组为$contact
,而不是$contacts
,因为您在编辑之前提出了问题。
答案 2 :(得分:2)
假设我正确理解了这个问题,你可以这样做:
for ($i = 0; $i < count($rows); $i++) {
$s = $rows[$i];
unset($contacts[$s]);
}
答案 3 :(得分:0)
由于Felix Kling和Dan Grossman的答案将适用于您展示的示例,您可能会遇到空白问题,例如数据中的换行符,尤其是如果您从文件中提取了它。所以,扩展Felix的答案:
$contacts = array_diff_key(array_map('trim', $contacts), array_flip(array_map('trim', $rows)));
您可以通过首先正确构建数据来提高效率,但这应该可以解决问题。