<?php
/**
* Reposition an array element by on its key.
*
* @param array $array The array being reordered.
* @param string|int $key They key of the element you want to reposition.
* @param int $order The position in the array you want to move the element to. (0 is first)
*
* @throws \Exception
*/
function repositionArrayElement(array &$array, $key, int $order): void
{
if(($a = array_search($key, array_keys($array))) === false){
throw new \Exception("The {$key} cannot be found in the given array.");
}
$p1 = array_splice($array, $a, 1);
$p2 = array_splice($array, 0, $order);
$array = array_merge($p2, $p1, $array);
}
$fruits = [
'bananas'=>'12',
'apples'=>'23',
'tomatoes'=>'21',
'nuts'=>'22',
'foo'=>'a',
'bar'=>'b'
];
repositionArrayElement($fruits, "foo", 1);
var_export($fruits);
$colours = ["green", "blue", "red"];
repositionArrayElement($colours, 2, 0);
var_export($colours);