获取未进行比较的数组值

时间:2014-09-04 00:43:57

标签: php arrays

目前,假设我有两个数组如下:

  $values1= array(1, 2, 3);
  $values2= array(1, 3, 4);

如果我在循环中比较两个数组,我将能够区分第一个数组的哪些数组元素没有被比较。例如:

             $data=array();
            foreach($values1 as $value) {

                    if(! in_array($value, $values2 )) {
                        $data[]=$value;
                   }
            }

通过这种方式,我会发现2是不在$value2 array中的值,但同时我也想知道什么是不存在的其他额外元素在$valnues2 array中进行了比较,例如4

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

我希望你不介意使用一个函数,但是你可以将它们合并,并将它们与具有相似值的那些进行比较以获得差异。像这样:

$values1 = array(1, 2, 3);
$values2 = array(1, 3, 4);
$others = array_diff(array_merge($values1, $values2), array_intersect($values1, $values2));
echo '<pre>';
print_r($others);

应输出如下内容:

Array
(
    [1] => 2
    [5] => 4
)

答案 1 :(得分:1)

array_diff()仅检查arg 1中不存在于arg 2中的元素,解决此问题的一种方法是检查两种方式并合并结果:

function array_diff_both($a, $b) {
    $d1 = array_diff($a, $b);
    $d2 = array_diff($b, $a);
    return array_merge($d1, $d2);
}

print_r(array_diff_both($values1, $values2));

示例:

Array
(
    [0] => 2
    [1] => 4
)

展望未来,最好将数组作为数组传递,以便您可以使用数组的数量扩展此功能。