Maybe this one works?
array_diff(array_unique($array1 + $array2), array_intersect($array1, $array2))

On Wed, Apr 14, 2010 at 4:39 AM, Ashley Sheridan
<a...@ashleysheridan.co.uk> wrote:
> 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
>
>
>

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to