我有一个数组:
$array = array(
'key1' => 'value1',
'key2' => 'value2',
'key3' => 'value3',
'key4' => 'value4',
'key5' => 'value5',
);
我想用指定的键获取它的一部分 - 例如key2, key4, key5
。
预期结果:
$result = array(
'key2' => 'value2',
'key4' => 'value4',
'key5' => 'value5',
);
最快的方法是什么?
答案 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_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));
答案 2 :(得分:0)
我看到的唯一方法是迭代数组并构造一个新数组。
使用array_walk遍历数组并构造新数组或构造匹配数组并使用array_intersect_key等。