For Programmers: Free Programming Magazines  


Home > Archive > PHP Programming > January 2006 > sorting an array.. need help









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author sorting an array.. need help
namemattersnot@msn.com

2006-01-30, 3:55 am

re,

i've have the following array:

files['name'][1]
['size'][1]
['time'][1]
files['name'][2]
['size'][2]
['mtime'][2]
...etc.

how do I sort this array according to "time" index? so that, for
example, files['name'][0] would give "my_file.txt" that was last
created?

thank you in advance!

Jerry Stuckle

2006-01-30, 7:56 am

namemattersnot@msn.com wrote:
> re,
>
> i've have the following array:
>
> files['name'][1]
> ['size'][1]
> ['time'][1]
> files['name'][2]
> ['size'][2]
> ['mtime'][2]
> ..etc.
>
> how do I sort this array according to "time" index? so that, for
> example, files['name'][0] would give "my_file.txt" that was last
> created?
>
> thank you in advance!
>


(I hope the mtime in your second element is a typo...)

Someting like (not tested):

<?php
function cmp($a, $b)
{
// Could also be done with ternary operator.
// But this is easier to understand

if ($a['time'] > $b['time'])
return 1;
else
if ($a['time' == $b['time'])
return 0;
else
return -1;
}


uksort($files, "cmp");

}
?>


--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================
Sune Storgaard

2006-01-30, 6:57 pm

namemattersnot@msn.com wrote:
> i've have the following array:
>
> files['name'][1]
> ['size'][1]
> ['time'][1]
> files['name'][2]
> ['size'][2]
> ['mtime'][2]
> ..etc.
>
> how do I sort this array according to "time" index? so that, for
> example, files['name'][0] would give "my_file.txt" that was last
> created?


A little *dirty* trick is to rearrange the array into a new array, where the
time is first entry.
In this case, swap it around so you get
files
['time'][1]
['size'][1]
['name'][1]
When you sort it now, it will be correct as its sorted on first entry =
time.
Then swap it back to the original structure.

See the "smith / johnson/ berger" example at php.net/sort


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2010 codecomments.com