Специальный порядок массивов по ключу в php - PullRequest
1 голос
/ 21 ноября 2011

Пожалуйста, не могли бы вы мне помочь:

У меня есть массив, отсортированный по ключу:

$a['a'] = value;
$a['b'] = value;
$a['c'] = value;
$a['d'] = value;
$a['e'] = value;

Мне нужно переупорядочить это по этому правилу - возьмите одно поле и поставьте его на первое место идругие не меняются

fe

$a['c'] = value;
$a['a'] = value;
$a['b'] = value;
$a['d'] = value;
$a['e'] = value;

или

$a['d'] = value;
$a['a'] = value;
$a['b'] = value;
$a['c'] = value;
$a['e'] = value;

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

I думаю вы имели в виду что-то вроде этого:

function get_and_place_first($index, $array) {
    $new_first_element = $array[$index];       // save element you want to have as first
    unset($array[$index]);                     // delete that element from old position
    array_unshift($array, $new_first_element); // place it at the beginning of $array
}

Вы должны использовать это следующим образом:

get_and_place_first('c', $a);

, и вы должны получить желаемый эффект оттвой первый пример.Конечно, вы можете проверить, существует ли элемент в данном массиве и т. Д., Но это зависит от вас.

0 голосов
/ 21 ноября 2011

Попробуйте эту функцию из http://ykyuen.wordpress.com/2011/09/16/php-swap-array-elements-by-array-keys/

function array_swap_assoc($key1, $key2, $array) {
  $newArray = array ();
  foreach ($array as $key => $value) {
    if ($key == $key1) {
      $newArray[$key2] = $array[$key2];
    } elseif ($key == $key2) {
      $newArray[$key1] = $array[$key1];
    } else {
      $newArray[$key] = $value;
    }
  }
  return $newArray;
}

Пример кода:

<?php
  $temp = array('a' => 'A', 'b' => 'B');
  $temp = array_swap_assoc('a', 'b', $temp);
  print_r($temp);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...