Re-arranging elements in an associative array
| From: | Fred Riley | Date: | Thu, 23 Mar 2006 18:10:49 +0000 |
| Subject: | Re-arranging elements in an associative array | ||
| Groups: | php.db php.general | ||
| Request: | Send a blank email to php-db+get-41600@lists.php.net to get a copy of this message | ||
Hi
This is my first question to these NGs, so please be gentle with me in any replies :). I've
crossposted it as I'm not sure which is the more appropriate group.
I'm a relative newbie to PHP, and my Q in short is: is there an easy way to manually change the
arrangement of elements in an associative array?
I'll use an example from the PHP manual:
$a = array( 'color' => 'red',
'taste' => 'sweet',
'shape' => 'round',
'name' => 'apple',
);
If you then iterate through this with foreach() to print it out then the keys and values will be
printed in the order above. What I'd like to do is, say, move $a['name'] up to 2nd
place, so that it would print in the order:
'color'
'name'
'shape'
'name'
I don't want to sort the array, just rearrange it a bit. I've looked in the array function
list in TFM but can't see anything appropriate, and I couldn't see anything on PX or
phpbuilder.
The reason I want to do this is to arrange the values in a row extracted from mySQL. If you click on
any of the titles in my test database browse page at http://www.nottingham.ac.uk/~ntzfr/rlos/database/rlo_titles.php
you should get a 'full record' page. The fields from "RLO No." down to
"Record last updated" are extracted from a single table 'RLO' with a simple
SELECT query and their names and values are stuck into the associative array $record. The fields
below (Author, Developer, etc) are extracted from junction tables by separate join queries, and also
assigned to $record. The table is then printed with a simple foreach loop. What I'd like to do
is shift, say, "Author" after "RLO title", "Developer" after
"Stage", and so on.
I could do this the clunky way, by manually assigning each key and value from the queries into an
array with the elements in the required order, and I'll do that if there's no easy way of
rearranging elements. I suppose I could use some complex combination of shift(), pop(), merge() and
whatnot, but that would probably take up more time than the clunky way. TIA for any
suggestions/tips.
Cheers
Fred
Learning Technologist
School of Nursing, University of Nottingham