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
|
|
|
|
|