PHP:查找值的数组差异[重复]

Posted

技术标签:

【中文标题】PHP:查找值的数组差异[重复]【英文标题】:PHP: Find array difference on values [duplicate] 【发布时间】:2017-08-17 11:58:50 【问题描述】:

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

$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;
        
    

但使用大列表会占用大量资源。

还有其他更有效的方法吗?

【问题讨论】:

php.net/array_diff 我尝试了array_diff,但它并没有无缝搜索所有值 - 如果我理解正确,只比较 value[0] 与 value2[0]?它应该将 value[0] 与另一个数组中的所有值进行比较 比较应该不区分大小写吗? 啊这就是为什么 array_diff() 之前没有工作的原因,我忘了 strtolower() 所有的字符串 :) 谢谢! @Bolli,如果您的问题得到解决,请接受其中一个答案或删除您的问题。谢谢, 【参考方案1】:

PHP code demo

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

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

【讨论】:

【参考方案2】:

在 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 ) 

【讨论】:

你为什么复制另一个答案?【参考方案3】:

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

试一试:

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

【讨论】:

以上是关于PHP:查找值的数组差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查找数组中的最大差异 - 需要算法解决方案优化 [重复]

PHP中此数组声明的差异[重复]

在 1D NumPy 数组中查找值的索引/位置(具有相同的值)[重复]

如何根据 PHP 中的键清除具有半重复值的数组数组?

在具有特定键的特定值的数组中查找对象的索引[重复]

php:如何获取键值的索引数组[重复]