Как поменять ключи со значениями в массиве? - PullRequest
12 голосов
/ 27 июля 2011

У меня есть массив вроде:

array(
  0 => 'a',
  1 => 'b',
  2 => 'c'
);

Мне нужно преобразовать его в:

array(
  'a',
  'b',
  'c'
);

Какой самый быстрый способ заменить ключи значениями?

Ответы [ 6 ]

25 голосов
/ 27 июля 2011

PHP имеет функцию array_flip, которая обменивает все ключи на соответствующие им значения, но вам это не нужно в вашем случае, потому что массивы одинаковы.

array(
  'a',
  'b',
  'c'
);

Этот массив имеет ключи 0, 1 и 2.

4 голосов
/ 27 июля 2011

Используйте array_flip(). Это будет делать, чтобы поменять ключи со значениями. Тем не менее, ваш массив в порядке, так оно и есть. То есть вам не нужно менять их местами, потому что тогда ваш массив станет:

array(
  'a' => 0,
  'b' => 1,
  'c' => 2
);

не

array(
  'a',
  'b',
  'c'
);
3 голосов
/ 27 июля 2011
array(
  0 => 'a',
  1 => 'b',
  2 => 'c'
);

и

array(
  'a',
  'b',
  'c'
);

- это тот же массив, вторая форма имеет 0,1,2 в качестве неявных ключей. Если ваш массив не имеет числовых ключей, вы можете использовать функцию array_values ​​, чтобы получить массив, который имеет только значения (с неявными цифровыми ключами).

В противном случае, если вам нужно поменять ключи со значениями array_flip - это решение, но из вашего примера не ясно, что вы пытаетесь сделать.

2 голосов
/ 27 июля 2011

Для этого вы захотите использовать array_flip().

2 голосов
/ 27 июля 2011

$flipped_arr = array_flip($arr); сделает это за вас.

(источник: http://php.net/manual/en/function.array-flip.php)

2 голосов
/ 27 июля 2011

См .: array_flip

...