PHP:查找值的数组差异

时间:2017-03-24 13:54:27

标签: php

我有两个非常大的数组,其中包含电子邮件地址。

$oldmail$newmail

两者都是这样的:

[0] => some@email.com
[1] => some1@email.com
[2] => some2@email.com
...

我想查找$newmail$oldmail内不存在的所有电子邮件值。

我认为这应该有效:

foreach ($oldmail as $key => $value) 
{
    foreach ($newmail as $key2 => $value2) 
    {
        if ($value == $value2) 
        {
            //do nothing..
        }
        else
        {
            echo $value2;
        }
    }
}

但这是通过大名单来解决资源问题的方法。

还有另一种更有效的方法吗?

3 个答案:

答案 0 :(得分:3)

PHP code demo

<?php
$a1=array("red","green","blue","yellow");
$a2=array("red","green","blue");

$result=array_diff($a1,$a2);
print_r($result);
?>

答案 1 :(得分:1)

在PHP中使用array_diff

$a1=array("some@email.com","some1@email.com");
$a2=array("some1@email.com","some2@email.com");
$result=array_diff($a2,$a1);
print_r($result);

结果:

Array ( [1] => some2@email.com ) 

答案 2 :(得分:1)

array_diff()是正确的选择。它不像您在评论中提到的那样仅按索引进行匹配。它比较了所有值。

试一试:

$result=array_diff($newmail,$oldmail);
print_r($result);