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:查找值的数组差异[重复]的主要内容,如果未能解决你的问题,请参考以下文章