Как отсортировать массив с одним исключением в PHP

Допустим, у меня есть массив с именем $array, который выглядит так, как только я запускаю на нем asort:

Array
(
    [1] => Apples
    [2] => Bananas
    [3] => Cherries
    [4] => Donuts
    [5] => Eclairs
    [6] => Fried_Chicken
)

Как проще всего сделать так, чтобы после сортировки по алфавиту ключ со значением "Пончики" удалялся, а затем ставился в конце?

2 ответа

Решение

Я придумал это. Протестировал и подтвердил, что это работает. Переупорядочил ваш массив, чтобы я мог видеть сортировку.

$arr = Array(
  1 => "Fried_Chicken",
  2 => "Donuts",
  3 => "Bananas",
  4 => "Apples",
  5 => "Eclairs",
  6 => "Cherries"
);  

// Get donut and key
$donut_key = array_search("Donuts", $arr);
$donut = $arr[$donut_key];  // If you don't need to keep the value, skip this line

// Remove donut
unset($arr[$donut_key]);

// Sort
asort($arr);

// Append Donut
$arr += array($donut_key => $donut);

Поиск по массиву http://php.net/manual/en/function.array-search.php

Приложение для сохранения ключей http://www.vancelucas.com/blog/php-array_merge-preserving-numeric-keys/

Я бы просто удалил элемент пончик, выполни asort, а затем снова добавьте пончик.

Другие вопросы по тегам