RE: [PHP] sortind arrays
| From: | Ford, Mike | Date: | Thu, 25 Jan 2007 14:35:54 +0000 |
| Subject: | RE: [PHP] sortind arrays | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-247779@lists.php.net to get a copy of this message | ||
On 25 January 2007 10:55, Alexander Sagen wrote:
> Roman Neuhauser skrev:
> > # kalles@operamail.com / 2007-01-25 08:12:14 +0200:
> > > How can I sort an array like this so that it would be ASC ordered
> > > by the [1] key in subarrays? I need to maintain only the subarray
> > > key - value pairs. (Do I make sense?)
> > >
> > > Array
> > > (
> > > [0] => Array
> > > (
> > > [0] => Logo
> > > [1] => NameC
> > > [2] => Home
> > > [3] => url
> > > )
> > >
> > > [1] => Array
> > > (
> > > [0] => Logo
> > > [1] => NameA
> > > [2] => Home
> > > [3] => url
> > > )
> > >
> > > [2] => Array
> > > (
> > > [0] => Logo
> > > [1] => NameG
> > > [2] => Home
> > > [3] => url
> > > )
> > > }
> >
> > http://www.php.net/usort
> >
> I think usort would be a bit overkill, he would probably find himself
> making a function to sort and maintain the association between the
> subarrays. Go with array_multisort, it would be a one-liner.
What total tosh! array_multisort() won't handle this one -- usort() is correct. The only
function needed is a (one-liner!) custom comparison to compare individual [1] elements -- usort()
takes care of all the rest:
function compare_1($a, $b) { return strcmp($a[1], $b[1]); }
usort($array, 'compare_1');
Or even, for single use, collapse it to:
usort($array, create_function('$a,$b', 'return strcmp($a[1], $b[1]);');
Cheers!
Mike
---------------------------------------------------------------------
Mike Ford, Electronic Information Services Adviser,
Learning Support Services, Learning & Information Services,
JG125, James Graham Building, Leeds Metropolitan University,
Headingley Campus, LEEDS, LS6 3QS, United Kingdom
Email: m.ford@leedsmet.ac.uk
Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211
To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm