2

Here's my array of $keys:

Array
(
    [0] => 1
    [1] => 3
    [2] => 4
)

And my $values:

Array
(
    [0] => Red
    [1] => Orange
    [2] => Yellow
    [3] => Green
    [4] => Blue
)

I want to create a new array of some of the values in $values using the values in $keys as keys:

Array
(
    [1] => Orange
    [3] => Green
    [4] => Blue
)

Obviously I can foreach to get the values I want, but I want to make sure I'm not overlooking something in the plethora of PHP array functions.

I've Googled the question, and the answer comes back as using array_combine, which won't achieve the desired output.

Your help is appreciated :)

2
  • Might look at the second answer of the linked one in case there are duplicate values in the $keys array. Commented Apr 1, 2015 at 15:30
  • Thank you. I'm ashamed to have duplicated a question :/ Commented Apr 1, 2015 at 16:44

1 Answer 1

5

Flip the $keys array to make the values keys and then use array_intersect_key():

$result = array_intersect_key($values, array_flip($keys));

Returns the values from $values that have the same keys as the flipped $keys.

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

2 Comments

Indeed, I don't understand why the OP does not want to use foreach?
@sємsєм: I don't have a problem with foreach, but if there's a built-in function to achieve the same goal, it's likely to be quicker, isn't it?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.