You are here: Re: [PHP] array diff with both values returned « PHP « IT news, forums, messages
Re: [PHP] array diff with both values returned

Posted by Philip Hallstrom on 10/19/90 11:15

> 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-5555");
> $array2=array("name"=>"fred","gender"=>"f","phone="=>"555-5555");
>
> 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-5555");
$array2=array("name"=>"fred","gender"=>"f","phone="=>"555-5555");

$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

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация