Home » Php » php – Get part of an array

php – Get part of an array

Posted by: admin July 12, 2020 Leave a comment

Questions:

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 ?

How to&Answers:

You need array_intersect_key function:

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

Also array_flip can help if your keys are in array as values:

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

Answer:

You can use array_intersect_key and array_fill_keys to do so:

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

array_flip instead of array_fill_keys will also work:

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

Answer:

Only way I see is to iterate the array and construct a new one.

Either walk the array with array_walk and construct the new one or construct a matching array and use array_intersect_key et al.