Как настроить сортировку индексов массива в php? - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть многомерный массив или массивы, которые я также использую в своем файле конфигурации.Файл также редактируется вручную, поэтому я хочу, чтобы некоторые клавиши имели фиксированное положение.Код читает файл конфигурации с этим массивом, модифицирует, вставляет ключи и т. Д., А затем сохраняет его обратно.При сохранении я сортирую ключи, но теперь я обнаружил, что они недостаточно хороши.

Есть ли способ иметь

  • ключ 'full_name' всегда в качестве первого ключа
  • ключ 'version' в качестве второго
  • , а остальные ключи должны быть отсортированы в алфавитном порядке?

Образец массива ....

array (
  'skroob' => 
  array (
    'ssh' => 'skroob',
    'codebase_path' => '/srv/www/htdocs/imacs/radek/4.0.1',
    'ssh_status' => 'ok',
    'version' => '4.0.1',
    'ssh_last_access' => '2012-Feb-17 10:07:26',
    'edu_url' => 'https://testing/imacs/radek/4.0.1',
    'full_name' => 'skroob 4.0.1',
  ),
  'testing' => 
  array (
    'full_name' => 'My beautiful testing server (trunk)',
    'version' => 'trunk',
    'ssh' => 'testing',
    'codebase_path' => '/srv/www/htdocs/imacs/radek/trunk',
    'ssh_last_access' => '2012-Feb-17 10:07:26',
    'ssh_status' => 'ok',
  ),
)

1 Ответ

1 голос
/ 17 февраля 2012

Вот один из способов. Сортирует массив по алфавиту, по ключу. Затем он переворачивает массив и сбрасывает значения full_name и version keys. Затем он снова добавляет эти ключи, чтобы они помещались в конец массива. Наконец, он снова обращается к массиву. Вроде хак, но я не уверен, что есть намного лучший способ сделать то, что ты просишь.

ksort($arr['skroob']);

$arr['skroob'] = array_reverse($arr['skroob']);

$version = $arr['skroob']['version'];
$full_name = $arr['skroob']['full_name'];

unset($arr['skroob']['full_name'], $arr['skroob']['version']);

$arr['skroob']['version'] = $version;
$arr['skroob']['full_name'] = $full_name;

$arr['skroob'] = array_reverse($arr['skroob']);

Другое решение - использовать uksort и написать небольшую функцию обратного вызова. Это, вероятно, выглядело бы немного более профессионально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...