On Tue, 2010-04-13 at 23:01 -0600, Ashley M. Kirchner wrote:
> I have the following scenario:
>
>
>
> $array1 = array("12", "34", "56", "78", "90");
>
> $array2 = array("12", "23", "56", "78", "89");
>
>
>
> $result = array_diff($array1, $array2);
>
>
>
> print_r($result);
>
>
>
>
>
> This returns:
>
>
>
> Array
>
> (
>
> [1] => 34
>
> [4] => 90
>
> )
>
>
>
>
>
> However what I really want is a two-way comparison. I want elements that
> don't exist in either to be returned:
>
>
>
> 34 and 90 because they don't exist in $array2, AND 23 and 89 because they
> don't exist in $array1. So, is that a two step process of first doing an
> array_diff($array1, $array2) then reverse it by doing array_diff($array2,
> $array1) and merge/unique the results? Any caveats with that?
>
>
>
> $array1 = array("12", "34", "56", "78", "90");
>
> $array2 = array("12", "23", "56", "78", "89");
>
>
>
> $diff1 = array_diff($array1, $array2);
>
> $diff2 = array_diff($array2, $array1);
>
>
>
> $result = array_unique(array_merge($diff1, $diff2));
>
>
>
> print_r($result);
>
>
>
>
>
> -- A
>
I don't see any problems with doing it that way. This will only work as
you intended if both arrays have the same number of elements I believe,
otherwise you might end up with a situation where your final array has
duplicates of the same number:
$array1 = $array(1, 2, 3, 4, 5, 6);
$array2 = $aray(1, 3, 2, 5);
Thanks,
Ash
http://www.ashleysheridan.co.uk