Получить часть массива - PullRequest
       2

Получить часть массива

7 голосов
/ 25 января 2010

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

$array = array(
  'key1' => 'value1',
  'key2' => 'value2',
  'key3' => 'value3',
  'key4' => 'value4',
  'key5' => 'value5',
);

и я бы хотел получить часть его с указанными ключами - например, key2, key4, key5.

Ожидаемый результат:

$result = array(
  'key2' => 'value2',
  'key4' => 'value4',
  'key5' => 'value5',
);

Какой самый быстрый способ сделать это?

Ответы [ 3 ]

16 голосов
/ 25 января 2010

Вам нужно array_intersect_key функция:

$result = array_intersect_key($array, array('key2'=>1, 'key4'=>1, 'key5'=>1));

Также array_flip может помочь, если ваши ключи находятся в массиве в виде значений:

$result = array_intersect_key(
    $array, 
    array_flip(array('key2', 'key4', 'key5'))
);
5 голосов
/ 25 января 2010

Вы можете использовать array_intersect_key и array_fill_keys для этого:

$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_fill_keys($keys, null));

array_flip вместо array_fill_keys также будет работать:

$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_flip($keys));
0 голосов
/ 25 января 2010

Единственный способ, которым я вижу, - это перебрать массив и создать новый.

Либо обходите массив с помощью array_walk и создайте новый, либо создайте соответствующий массив и используйте array_intersect_key и др.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...