SWD Technical Solutions - Atlantic Franchise Swellendam



Home arrow Domain Registration Make Text BiggerMake Text SmallerReset Text Size
Contact Us - ADSL - Hosting - Domains - Sign up - Live Help

Sort array by one field in array

PHP: sort array by one field in array
There's probably a PHP function that does this, but I haven't been able to find it, so I rolled my own. First procedurally:

# ingredients
# $ARRAY : array or arrays to be sorted
# $sortby_index : index/column to be sorted on
# $key_index : equivalent to primary key column in SQL array

# get ordering array
foreach ( $ARRAY as $_DATA )
{
$_key = $_DATA[$key_index];
$ORDERING[$_key] = $_DATA[$sortby_index];
}

# sort ordering array
asort($ORDERING);

# DEBUG
#trigger_notice($ORDERING);

# map ARRAY back to ordering array
foreach ( $ORDERING as $_key => $_sort_col_val )
{
# get index for ARRAY where ARRAY[][$key_index] == $_key
foreach ($ARRAY as $_i => $_DATA)
{
if ( $_key == $_DATA[$key_index] )
{
$SORTED[] = $ARRAY[$_i];
continue;
}
}
}


Now as a function

function sort_array_of_arrays($ARRAY, $sortby_index, $key_index)
{
// *** NOTES
/*
requires array of associative arrays -- not checked within array
*/

// *** DATA

# order array
$ORDERING = array();

# return
$SORTED = array();

# internal
$_DATA = array();
$_key = '';
$_sort_col_val = '';
$_i = 0;


// *** MANIPULATE

# get ordering array
foreach ( $ARRAY as $_DATA )
{
$_key = $_DATA[$key_index];
$ORDERING[$_key] = $_DATA[$sortby_index];
}

# sort ordering array
asort($ORDERING);

# DEBUG
#trigger_notice($ORDERING);

# map ARRAY back to ordering array
foreach ( $ORDERING as $_key => $_sort_col_val )
{
# get index for ARRAY where ARRAY[][$key_index] == $_key
foreach ($ARRAY as $_i => $_DATA)
{
if ( $_key == $_DATA[$key_index] )
{
$SORTED[] = $ARRAY[$_i];
continue;
}
}
}

// *** RETURN

return $SORTED;

} # end Fx


Assumes asort will sort matters for you. Function will not work if you have to do some calculations on the sort index before sorting. But easily adapted.
 
Tag it:
Delicious
Furl it!
Spurl
digg
Blinkbits
BlinkList
blogmarks
co.mments
connotea
De.lirio.us
digg
Fark
feedmelinks
LinkaGoGo
Ma.gnolia
Netvouz
NewsVine
RawSugar
Reddit
Shadows
Simpy
Smarking
TailRank
Wists
YahooMyWeb
< Prev   Next >
Related Items

Joomla Template by Chris Bruce - Fatboys Team