2012-03-05 3 views
1

У меня есть массив:Удалить элементы массива на основе ключевого

array(
    '1' => red, 
    '2' => green, 
    '3' => blue, 
    '4' => orange 
); 

И второй массив:

array(
    '0' => 1, 
    '1' => 4 
); 

Я хочу сохранить только те элементы в массиве 1, которые имеют ключевое значение, равное значение в массиве 2.

Таким образом, окончательный массив должен выглядеть следующим образом:

array (
    '1' => red, 
    '4' => orange 
); 
+2

Что вы пробовали? Мы будем рады помочь вам исправить проблемы в существующем коде, но мы не будем (в большинстве случаев) писать код для вас. –

ответ

3

Используйте array_intersect_key, чтобы получить значения, которыми обмениваются ключи (после использования array_flip на 2-м массиве).

$array3 = array_intersect_key($array1, array_flip($array2)); 
+0

Это не сохранит значения из $ array1. Результатом является 'Array ([1] => 0 [4] => 1)'. –

+0

@GeorgeCummins: Я исправил это. Я изменил параметры. Теперь он работает правильно :-) –

+0

Выглядит хорошо. Благодарю. –

1

Использование array_intersect_key с array_flip,

$r = array_intersect_key($a, array_flip($b)); 
Смежные вопросы