Re: Array differences

From: Date: Wed, 14 Apr 2010 14:45:02 +0000
Subject: Re: Array differences
References: 1 2  Groups: php.general 
Request: Send a blank email to php-general+get-304088@lists.php.net to get a copy of this message
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 <ash@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 > > >

« previous php.general (#304088) next »