2015-04-01 2 views
2

Вот мой массив $keys:Как выбрать подмножество значений из массива, используя значения из другого массива в виде ключей?

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

И мой $values:

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

Я хочу, чтобы создать новый массив некоторых значений в $values, используя значения в $keys в качестве ключей:

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

Очевидно, я могу foreach, чтобы получить значения, которые я хочу, но я хочу удостовериться, что я не пропускаю что-то во множестве функций массива PHP.

У меня возник вопрос, и ответ возвращается с использованием array_combine, который не достигнет желаемого результата.

Ваша помощь ценится :)

+0

Можете просмотреть второй ответ связанного, если в массиве '$ keys' есть повторяющиеся значения. – AbraCadaver

+0

Спасибо. Мне стыдно, что у меня возник вопрос:/ – Kalessin

ответ

5

Переверните $keys массив, чтобы ключи значения, а затем использовать array_intersect_key():

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

Возвращает значения из $values, которые имеют те же ключи, как перевернутый $keys.

+0

Действительно, я не понимаю, почему OP не хочет использовать 'foreach'? – SaidbakR

+0

@ sємsєм: У меня нет проблем с 'foreach', но если есть встроенная функция для достижения той же цели, скорее всего, она будет быстрее, не так ли? – Kalessin

Смежные вопросы