15

I have array like:

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

I need to convert it to:

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

What's the fastest way to swap keys with values?

2
  • 2
    array_flip maybe? It does exactly what you said, not what you want (because what you want is not really meaningful). Commented Jul 27, 2011 at 13:25
  • 2
    Use array_flip to swap keys with values. Commented Jul 12, 2014 at 19:44

6 Answers 6

32

PHP has the array_flip function which exchanges all keys with their corresponding values, but you do not need it in your case because the arrays are the same.

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

This array has the keys 0, 1, and 2.

Sign up to request clarification or add additional context in comments.

Comments

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

and

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

are the same array, the second form has 0,1,2 as implicit keys. If your array does not have numeric keys you can use array_values function to get an array which has only the values (with numeric implicit keys).

Otherwise if you need to swap keys with values array_flip is the solution, but from your example is not clear what you're trying to do.

Comments

4

Use array_flip(). That will do to swap keys with values. However, your array is OK the way it is. That is, you don't need to swap them, because then your array will become:

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

not

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

Comments

3

See: array_flip

Comments

2

$flipped_arr = array_flip($arr); will do that for you.

(source: http://php.net/manual/en/function.array-flip.php)

Comments

2

You'll want to use array_flip() for that.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.