我有两个来自不同来源(MySQL,Excel)的电子邮件列表,类似于我的两个 例。我在php中创建了两个数组,比较它们。 " $ mail_old" array是包含数百个地址的主列表,并且在" $ mail_new" 有变化。名称相同,但有些域名发生了变化。
首先,我想检查哪些新地址不会出现在旧列表中,哪个 工作得很好。但我没有找到替换它们的方法,array_replace()似乎没有帮助。 array_diff()也用于检查差异,但我没有进一步。
这是我到目前为止所得到的,如果有人能给我一个提示,那将会很棒 将旧地址替换为新地址。
非常感谢!
<?php
$mail_old = array('peter@example.com', 'paul@example.org', 'max@example.com', 'mary@example.com', 'john@example.com', 'steve@example.org', 'sue@example.com', 'lisa@example.com', 'teo@example.com',);
$mail_new = array('peter@example.org', 'paul@example.org', 'john@example.org', 'steve@example.org');
foreach ($mail_new as $changed) {
if (!in_array($changed, $mail_old)) {
echo 'Address ' . $changed . ' is new.<br />';
}
}
?>
&#13;
答案 0 :(得分:0)
创建一个关联数组,该数组以$mail_old
:
$mail_by_name = array();
foreach ($mail_old as $i => $addr) {
list ($name, $domain) = explode('@', $addr);
$mail_by_name[$name] = $i;
}
然后根据这个测试新数组中的每个名称:
foreach ($mail_new as $changed) {
list($name, $domain) = explode('@', $changed);
if (isset($mail_by_name[$name])) {
if ($mail_old[$mail_by_name[$name]] != $changed) {
echo 'Address ' . $mail_old[$mail_by_name[$name]] . ' changed to ' . $changed . '.</br>';
$mail_old[$mail_by_name[$name]] = $changed;
}
} else {
echo 'Address ' . $changed . ' is new.<br />';
}
}