Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get part of an array

Tags:

arrays

php

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 ?

like image 493
hsz Avatar asked Jan 25 '10 12:01

hsz


2 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'))
);
like image 86
Ivan Nevostruev Avatar answered Sep 19 '22 12:09

Ivan Nevostruev


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));
like image 24
Gumbo Avatar answered Sep 19 '22 12:09

Gumbo