2014-02-17 238 views
-1

我已经创建了2个阵列如下。我的目标是比较这两个数组,并回显一些IF THERE是array2中不在array1中的值。比较2阵列在PHP

$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(1, 2, 3, 4, 6); 
+2

首款谷歌,如果你不能找到答案,然后在这里问的问题。 –

+1

如何处理不在array2中的array1元素? –

+1

@RonniSkansing这是一个有偏见的观点,我不同意,确定OP问了一些共同点,但为什么要责怪那些回答?另外,请定义'毫不费力的代码'。 –

回答

0

利用array_diff()

<?php 
$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(1, 2, 3, 4, 6); 

print_r(array_diff($array2,$array1)); 

OUTPUT :

Array 
(
    [4] => 6 
) 

EDIT :

这实际上是我所期待的相反。我想要的是 扫描array1以检查'6'的值是否存在于 数组中。如果不呼应的东西

<?php 
$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(1, 2, 3, 4, 6); 

foreach($array2 as $val) 
{ 
    if(in_array($val,$array1)) 
    { 
     echo "$val is available in array1<br>"; 
    } 
    else 
    { 
     echo "$val is not available in array1<br>"; 
    } 
} 

OUTPUT :

1 is available in array1 
2 is available in array1 
3 is available in array1 
4 is available in array1 
6 is not available in array1 
+0

这实际上与我所寻找的相反。我想要的是扫描array1来检查'6'的值是否存在于它不存在的数组中。如果它不回应某些东西。 – user3135626

+0

@ user3135626,检查编辑的答案 –

0

使用array_diff

array_diff($array2, $array1); 
+0

这实际上与我所寻找的相反。我想要的是扫描array1来检查'6'的值是否存在于它不存在的数组中。如果它不回应某些东西。 – user3135626

+0

@ user3135626这正是这个应该做的。 – sashkello

0

使用array_diff

<?php 
$array1 = array(1, 2, 3, 4, 5); 
$array2 = array(1, 2, 3, 4, 6); 
$result = array_diff($array1, $array2); 

print_r($result); 
?> 

输出

Array 
(
    [4] => 6 
) 

如果你想获得阵列相同的值使用array_intersect

$result = array_intersect($array1, $array2); 
1

正如其他人所指出的那样,你建议立即进行删除d使用array_diff(); array_diff($a, $b)返回$b中不存在的值$a

所以:

if (($diff = array_diff($array2, $array1))) { 
    printf(
     "Values in array2 that are not present in array1: %s\n", 
     join(' ', $diff) 
    ); 
}