获取数组的一部分

时间:2010-01-25 12:59:13

标签: php arrays

我有一个数组:

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

我想用指定的键获取它的一部分 - 例如key2, key4, key5

预期结果:

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

最快的方法是什么?

3 个答案:

答案 0 :(得分:16)

您需要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'))
);

答案 1 :(得分:5)

您可以使用array_intersect_keyarray_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));

答案 2 :(得分:0)

我看到的唯一方法是迭代数组并构造一个新数组。

使用array_walk遍历数组并构造新数组或构造匹配数组并使用array_intersect_key等。