Re: [PHP] array diff with both values returned

2005-05-08 Thread Richard Lynch
On Fri, May 6, 2005 7:03 am, blackwater dev said:
 Hello,

 Is there a good way to get the difference in two arrays and have both
 values returned?  I know I can use array_dif to see what is in one and
 not the other but...I need it to work a bit differently.

I believe you want array_union followed by array_unique (or whatever those
are called)



-- 
Like Music?
http://l-i-e.com/artists.htm

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



[PHP] array diff with both values returned

2005-05-06 Thread blackwater dev
Hello,

Is there a good way to get the difference in two arrays and have both
values returned?  I know I can use array_dif to see what is in one and
not the other but...I need it to work a bit differently.

I have:

$array1=array(name=fred,gender=m,phone==555-);
$array2=array(name=fred,gender=f,phone==555-);

I want to compare these two and have it return:

array(gender=array(m,f));

I want it to return all of the differences with the key and then the
value from array 1 and 2.

How?

Thanks!

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



Re: [PHP] array diff with both values returned

2005-05-06 Thread Philip Hallstrom
Is there a good way to get the difference in two arrays and have both
values returned?  I know I can use array_dif to see what is in one and
not the other but...I need it to work a bit differently.
I have:
$array1=array(name=fred,gender=m,phone==555-);
$array2=array(name=fred,gender=f,phone==555-);
I want to compare these two and have it return:
array(gender=array(m,f));
I want it to return all of the differences with the key and then the
value from array 1 and 2.
Well, if you can gaurantee that for every key will exist in both arrays, 
the following will work:

?php
$array1=array(name=fred,gender=m,phone==555-);
$array2=array(name=fred,gender=f,phone==555-);
$array3 = fooFunc($array1, $array2);
print_r($array3);
function fooFunc($array1, $array2) {
foreach ( $array1 as $k1 = $v1 ) {
$v2 = $array2[$k1];
if ( $v1 != $v2 ) {
$result_ary[$k1] = array($v1, $v2);
}
}
return($result_ary);
}
?
Prints out:
% php foo.php
Array
(
[gender] = Array
(
[0] = m
[1] = f
)
)
Depending on how large of an array you're expecting back, you might want 
to pass that around as a reference as well to save a copy... or not...

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