0

我正在寻找一个无错误的代码,通过比较两个数组来获得不变、添加和删除的项目数组。

在此处输入图像描述

有没有使用单一方法获得三个数组的有效方法?

php 或 javascript 都可以使用

4

2 回答 2

4

PHP 拥有丰富的数组特性,你所需要的只是array_diffarray_intersect

$i = array("k1","k2","k3","k4","k5");
$l = array("k1","k3","k5","k6");

// Removed
$r = array_diff($i, $l);

// Unchanged
$u = array_intersect($i, $l);

// Added
$a = array_diff($l, $i);

var_dump($r, $u, $a);

输出

array (size=2)
  1 => string 'k2' (length=2)
  3 => string 'k4' (length=2)
array (size=3)
  0 => string 'k1' (length=2)
  2 => string 'k3' (length=2)
  4 => string 'k5' (length=2)
array (size=1)
  3 => string 'k6' (length=2)

您可以创建自己的功能

function getSet($l, $r) {
    return array("diff" => array_diff($l, $r),"unchanged" => array_intersect($l, $r),"added" => array_diff($r, $l));
}
于 2012-12-03T19:38:43.427 回答
1

使用 PHP,您可能会使用 array_diff 和 array_intersect,因此在定义它们时使用 I 和 L:

$added = array_diff(L,I);
$removed = array_diff(I,L);
$unchanged = array_intersect(I,L);

您可以根据需要将其打包在一个函数中。

于 2012-12-03T19:40:35.823 回答