php - array_diff() 处理第二个数组中存在于第一个数组中的重复项

标签 php arrays

这可能是一个非常简单的问题,但在尝试解决几个小时后,我认为我的大脑现在正在以非常狭窄和特定的角度寻找解决方案。我什至可能使用了错误的功能!!

我有 2 个数组,我想要两个数组之间的任何可能差异。这适用于简单的数组,例如:

示例:

$dummy1 = array("0" => "508", "1" => "548", "2" => "558", "3" => "538", "4" => "563", "5" => "543");
$dummy2 = array("0" => "518", "1" => "548", "2" => "558", "3" => "538", "4" => "563", "6" => "543");

关于array_diff ($dummy2 , $dummy1);

正确输出:Array ( [0] => 518 )

有问题的场景: 我有这两个数组,不同之处在于第二个数组有重复值,即有一个额外的值,恰好与第一个数组中的一个相同值。

$array1 = array("0" => "508", "1" => "548", "2" => "558", "3" => "538", "4" => "563", "5" => "543");
$array2 = array("0" => "508", "1" => "508", "2" => "548", "3" => "558", "4" => "538", "5" => "563", "6" => "543");

echo count($array1).'<br>';
echo count($array2).'<br>'; //count is here for debugging purposes

现在在 array_diff ($array2, $array1);//或者不同的 diff_() 函数

我想输出: Array ( [0] => 508 )//(额外的 508 值)

基本上,两个数组之间可能存在任何差异。

我尝试了什么:

  • 如果第一次检查为空则反转数组
  • 使用 array_diff_assoc() 进行一些奇怪/复杂的混合
  • array_intersect()array_diff() 的一些其他奇怪/复杂的混合体

谢谢!我的想法/经验用完了。

最佳答案

只需将重复的值添加到输出中即可:

$array1 = array("0" => "508", "1" => "548", "2" => "558", "3" => "538", "4" => "563", "5" => "543");
$array2 = array("0" => "508", "1" => "508", "2" => "548", "3" => "558", "4" => "538", "5" => "563", "6" => "543");

var_dump(array_diff($array2, $array1) + array_diff_assoc($array2, array_unique($array2)));

输出:

array(1) { [1]=> string(3) "508" }  // Use array_values(OUTPUT) to reset keys if needed

如果需要,您还可以添加 array_diff_assoc($array1, array_unique($array1)),如果您想处理存在差异和重复的情况,请重新使用 array_unique 在你的输出上:var_dump(array_unique( ... ));

关于php - array_diff() 处理第二个数组中存在于第一个数组中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25645124/

相关文章:

PHP:用变量名回显常量

javascript - 将 JavaScript 数组转换为 JSON 对象

javascript - 基于旋转填充二维数组(矩阵)

php - Laravel 更改区域设置不起作用

php - Opencart:修改电子邮件布局

php - 使用 Xpath 查找具有特定子元素的 XML 节点

PHP - 数据库模式 : version control, 分支、迁移

python - 将加法矢量化到由另一个数组索引的数组中

javascript - 如何在js中转换为数组?

c++ - 挤压表 : same row overlap together, 并数数