Question: I have an array:

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

```

and I would like to get a part of it with specified keys - for example `key2, key4, key5`.

Expected result:

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

```

What is the fastest way to do it ?

Answer: 
You need [`array_intersect_key`](http://www.php.net/manual/en/function.array-intersect-key.php) function:

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

```

Also [`array_flip`](http://www.php.net/manual/en/function.array-flip.php) can help if your keys are in array as values:

```
$result = array_intersect_key(
    $array, 
    array_flip(array('key2', 'key4', 'key5'))
);

```
You can use [`array_intersect_key`](http://php.net/array_intersect_key) and [`array_fill_keys`](http://php.net/array_fill_keys) to do so:

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

```

[`array_flip`](http://php.net/array_flip) instead of `array_fill_keys` will also work:

```
$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_flip($keys));

```