需要在PHP中获得实际的array_diff

时间:2016-08-09 11:45:33

标签: php arrays

我有两个阵列说,

$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

我不知道哪个数组包含什么,但这些数组值是相似的数据。现在我需要得到这两个数组的区别。

来自文档:

array array_diff ( array $array1 , array $array2)
  

array1要从

进行比较的数组      

array2要与

进行比较的数组

但我的问题是我不知道哪个数组包含什么价值......

示例1:

$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

print_r(array_diff($a1, $a2)); // Array ( )

示例2:

$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

print_r(array_diff($a2, $a1)); // Array ( [0] => 23 [1] => 25 [3] => 28 )

我想将返回值作为我的输出是否使用示例一或两个。任何人都可以帮我解决这个问题。

4 个答案:

答案 0 :(得分:3)

您可以使用array_intersect来获取相似的值,然后在两个数组的合并上使用array_diff

$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

$a3 = array_diff(array_merge($a1, $a2), array_intersect($a1,$a2));

print_r($a3);

答案 1 :(得分:2)

您可以同时使用array_merge()

组合它们
$difference = array_merge(array_diff($a2, $a1), array_diff($a1, $a2));

答案 2 :(得分:1)

使用此

  <?php
   $a1 = array("19", "20");
   $a2 = array("23", "25", "20", "28", "19");
    $result = array_intersect($a1, $a2);// will give you commoon values
    $whole = array_merge($a1,$a2);// merge both array
    $new = array_diff($whole,$result);// will give values which are not in any one array either $a1 or $a2
 echo "<pre>";  print_r($new);
    ?>

输出

Array
(
    [2] => 23
    [3] => 25
    [5] => 28
)

答案 3 :(得分:-1)

看来你正试图在最大和最小的数组之间做一个array_diff,不知道哪个是哪个,这是一种方式:

$big = array();
$small = array();
if(count($a1) > count($a2)){
    $big = $a1;
    $small = $a2;
}
else{
    $big = $a2;
    $small = $a1;
}

print_r(array_diff($big, $small));