By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
432,549 Members | 1,717 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 432,549 IT Pros & Developers. It's quick & easy.

Flattening Multidimensional array to unique values

P: n/a
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

Feb 12 '07 #1
Share this Question
Share on Google+
1 Reply


P: n/a
Rik
On Mon, 12 Feb 2007 18:43:26 +0100, Chuy08 <ch****@yahoo.comwrote:
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
Feb 12 '07 #2

This discussion thread is closed

Replies have been disabled for this discussion.