从2个数组中找到奇数元素

时间:2014-04-25 01:07:32

标签: php arrays

我期待输出为2,5,但从下面的代码中获得2,3的输出。任何人都可以建议解决方案,请指出我的错误

<?php
$k=0;
$array1=Array(1,2,3);
$array2=Array(1,3,5);
$array3=Array();

for($i=0;$i<count($array1);$i++)
{
    if(!in_array($array1[$i],$array2))
    {
        if(!in_array($array1[$i],$array3))
        {
            $array3[$k]=$array1[$i];
            $k++;
        }
    }
}

for($j=0;$j<count($array2);$j++)
{
    if(!in_array($array2[$j],$array1))
    {
        if(!in_array($array2[$j],$array3))
        {
            $array3[$k]=$array1[$j];
            $k++;
        }
    }
}

print_r($array3);
?>

2 个答案:

答案 0 :(得分:1)

您可以使用array_diff()从每个数组中获取唯一值,然后将它们合并为一个最终数组:

$array1=Array(1,2,3);
$array2=Array(1,3,5);
$unique1 = array_diff($array1, $array2);
$unique2 = array_diff($array2, $array1);
$unique = array_merge($unique1, $unique2);
print_r($unique1); // Array ( [1] => 2 [2] => 5 )

Demo

答案 1 :(得分:1)

在第二个循环中,您使用的$array1[$j]应该是$array2[$j]

for($j=0;$j<count($array2);$j++)
{
    if(!in_array($array2[$j],$array1))
    {
        if(!in_array($array2[$j],$array3))
        {
            $array3[$k]=$array2[$j]; // this is where the fix is
            $k++;
        }
    }
}

DEMO

话虽如此,约翰肯定是你应该使用array_diff()