需要在PHP中获取实际数组_diff

需要在PHP中获取实际数组_diff,php,arrays,Php,Arrays,我有两种说法 $a1 = array("19", "20"); $a2 = array("23", "25", "20", "28", "19"); 我不知道哪个数组包含什么,但这些数组值是相似的数据。现在我需要得到这两个数组的差 从文件中: array array_diff ( array $array1 , array $array2) 数组1要从中进行比较的数组 array2要比较的数组 但我的问题是我不知道哪个数组包含什么值 示例1: $a1 = array("19", "20");

我有两种说法

$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");
我不知道哪个数组包含什么,但这些数组值是相似的数据。现在我需要得到这两个数组的差

从文件中:

array array_diff ( array $array1 , array $array2)
数组1要从中进行比较的数组

array2要比较的数组

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

示例1:

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

print_r(array_diff($a1, $a2)); // Array ( )
$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

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

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

print_r(array_diff($a1, $a2)); // Array ( )
$a1 = array("19", "20");
$a2 = array("23", "25", "20", "28", "19");

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

无论使用示例1还是示例2,我都希望返回值作为输出。有人能帮我解决这个问题吗。

你可以同时做这两件事,并将它们组合成一个
数组\u merge()

用这个

  <?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);
    ?>

似乎您试图在最大和最小的数组之间进行数组区分,但不知道哪个是哪个,下面是一种方法:

$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);

您可以使用
array\u intersect
获取相同的值,然后在合并两个数组时使用
array\u diff


这个问题模棱两可。来自阵列的数据有多相似?其中一个(但您不知道是哪一个)包含另一个的所有值吗?工作正常。是否要获取不在两个数组中的元素?如果你清楚地表达你的目标,有很多方法可以帮助你。不,我不是说你可能理解的其他事情,在我的问题中,我需要得到数组的差异,但是在函数中有一些绑定,我必须使用第一个数组中的所有值和第二个数组中的一些值。因此,如果我不知道哪个数组包含的值最多,那么如何决定将其用作第一个数组???
count($a1)>$a2
总是
FALSE
,但无论如何它都是错误的。我纠正了我的错误。为什么会出错呢?数组的大小并不能指示哪个diff会导致空数组。(除非是,因为OP的场景有一些特定的限制…)我同意数组的大小不是一个指标这一事实。但它可能是(发生在我身上)。这就是为什么我觉得它值得一提。是的,我只是想得到当我以不同的顺序使用时不是抽象的实际差异。是的,无论顺序如何,都可以做到。这看起来不错,但与@user1234的答案类似,但有解释和良好的结构。
$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);