我有两个阵列说,
$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 )
我想将返回值作为我的输出是否使用示例一或两个。任何人都可以帮我解决这个问题。
答案 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));