Alex Rivera | Logout

How do I move an array element with a known key to the end of an array in PHP?

Asked 2010-03-01T22:42:29.750
66

Having a brain freeze over a fairly trivial problem. If I start with an array like this:

$my_array = array(
                  'monkey'  => array(...),
                  'giraffe' => array(...),
                  'lion'    => array(...)
);

...and new elements might get added with different keys but always an array value. Now I can be sure the first element is always going to have the key 'monkey' but I can't be sure of any of the other keys.

When I've finished filling the array I want to move the known element 'monkey' to the end of the array without disturbing the order of the other elements. What is the most efficient way to do this?

Every way I can think of seems a bit clunky and I feel like I'm missing something obvious.

Edit
Report

1 Answer

13

array_shift is probably less efficient than unsetting the index, but it works:

$my_array = array('monkey' => 1, 'giraffe' => 2, 'lion' => 3);
$my_array['monkey'] = array_shift($my_array);
print_r($my_array);

Another alternative is with a callback and uksort:

uksort($my_array, create_function('$x,$y','return ($y === "monkey") ? -1 : 1;'));

You will want to use a proper lambda if you are using PHP5.3+ or just define the function as a global function regularly.

answered 2010-03-01T22:49:01.033

Your Answer