Connecting Tech Pros Worldwide Forums | Help | Site Map

Flattening Multidimensional array to unique values

Chuy08
Guest
 
Posts: n/a
#1: Feb 12 '07
If I have a multidimensional array like the following:

Array
$records =Array
0 =[Product] 30 year, [Rate]6.0;
1 =[Product] 30 year, [Rate]6.0;
2 =[Product] Pay Option, [Rate]1.0;
3 =[Product] Pay Option, [Rate]1.0;

How could I flatten this to achieve an array that only has unique Product
values, basically removing $records['1] and $records['3'] in this example?



--
Posted via a free Usenet account from http://www.teranews.com


Rik
Guest
 
Posts: n/a
#2: Feb 12 '07

re: Flattening Multidimensional array to unique values


On Mon, 12 Feb 2007 18:43:26 +0100, Chuy08 <chuy08@yahoo.comwrote:
Quote:
If I have a multidimensional array like the following:
>
Array
$records =Array
0 =[Product] 30 year, [Rate]6.0;
1 =[Product] 30 year, [Rate]6.0;
2 =[Product] Pay Option, [Rate]1.0;
3 =[Product] Pay Option, [Rate]1.0;
>
How could I flatten this to achieve an array that only has unique Product
values, basically removing $records['1] and $records['3'] in this
example?
Why does you example not contain a multidimensional array? This one is
handled just fine by array_unique()...

You probably mean:
$records = array(
array('product' ='30 year','rate'=6.0),
array('product' ='30 year','rate'=6.0),
array('product' ='Pay option','rate'=1.0),
array('product' ='Pay option','rate'=1.0));

Quite some overhead, but workable (even preserves keys):
<?php
function array_unique_multi($array){
$copy = $array;
array_walk($array,create_function('&$v,$k','$v = serialize($v);'));
$array = array_unique($array);
return array_intersect_key($copy,$array);
}
?>

Be carefull not to have unserializable content in the array.
--
Rik Wasmus
Closed Thread