У меня есть два списка электронной почты из разных источников (MySQL, Excel), похожие на два моих примера. Я создал два массива в php, чтобы сравнить их. Массив "$ mail_old" - это основной список с несколькими сотнями адресов, а в "$ mail_new" - изменения. имена те же, но некоторые из доменов изменены.
сначала я хочу проверить, какие из новых адресов не встречаются в старом списке, который работает только fine.but, я не нахожу способ их замены, array_replace(), похоже, не помогает здесь. array_diff() также работал для проверки различий, но я не понимаю.
вот что я получил до сих пор, было бы здорово, если бы кто-нибудь мог дать мне подсказку, как заменить старые адреса новыми.
Большое спасибо!
<?php
$mail_old = array('[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]', '[email protected]',);
$mail_new = array('[email protected]', '[email protected]', '[email protected]', '[email protected]');
foreach ($mail_new as $changed) {
if (!in_array($changed, $mail_old)) {
echo 'Address ' . $changed . ' is new.<br />';
}
}
?>
Создайте ассоциативный массив, который отменил имя в $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 />';
}
}