Вот аккуратная функция манипулировать положение (индекс) любой существующего элемента в массиве:
$sampleArray = array('a', 'b', 'c', 'd', 'e');
print_r($sampleArray);
print_r(arrayMoveElement('c',$sampleArray,1));
exit;
function arrayMoveElement($element, &$array, $position=0){
$index = array_search($element, $array); // Search for the element in the array and returns its current index
if($index == false){ // Make sure the element is present in the array
return false;
}
else{
unset($array[$index]); // Removes the element from the array
$array = array_values($array); // Re-sorts the indexes
if(!is_int($position)){return false;} // Position of the element that should be inserted must be a valid integer (index)
array_splice($array, $position, 0, $element); // Inserts the element to the desired position (index) starting from 0
return $array;
}
}// END function arrayMoveElementFirst($element, &$array){
Выход:
Массив ([0] => a [1] => b [2] => c [3] => d [4] => e)
Array ([0] => a [1] => c [2] => b [3] => d [4] => e)
Обратите внимание, что параметр позиции является необязательным, и если опустить эту функцию просто перемещает элемент в начало массива. Кроме того, это может быть отрицательное целое число, в этом случае позиция (индекс) элемента вычисляется с его конца.
Существует валидация, которая гарантирует, что элемент существует в массиве, и что новая позиция предоставляется как целочисленное значение.
Просмотреть комментарии кодов для получения более подробной информации.
Звучит как сортировка, да? – AbraCadaver