My array:
$data = array('two' => 2, 'one' => 1, 'three' => 3);
Now, with when I iterate the array, the first value that will come up will probably be
$data['two'] // = 2 @ index[0]
right?
What if I want to move the $data[1] to the position of $data[0] ?
To rephrase:
How do I make the array look like this (so that 'one' comes up at $data[0])
$data = array('one' => 1, 'two' => 2, 'three' => 3
Why do I need this?
I use code igniter, the table->generate built-in function takes an assoc array and creates a table but offers no method of arranging the columns. This is why I would like to move the columns in the source array.
Two possible solutions (without using
array_splice
):1) Create a new array with the new order of the keys.
2) Move the element
one
upfront, remove it from$data
and copy the rest of the array.PHP has 13 functions for sorting arrays, by key, by value, by user-defined functions where you can specify that "one" comes before "two". There's also array_shift, array_unshift, array_push and array_pop for moving things onto or off the front or end of the array. You can build a whole new array from the existing one.
See ksort and uksort.
Here's a working example:
Output:
Run this: http://codepad.org/yAK1b1IP
I think, you should use asort function:
Run this code
Take a look at daniele centamore's comment on PHP's array_splice() function, where he provides a couple of functions for moving the elements in an non-associative array.