获取数组的一部分

hsz*_*hsz 7 php arrays

我有一个数组:

$array = array(
  'key1' => 'value1',
  'key2' => 'value2',
  'key3' => 'value3',
  'key4' => 'value4',
  'key5' => 'value5',
);
Run Code Online (Sandbox Code Playgroud)

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

预期结果:

$result = array(
  'key2' => 'value2',
  'key4' => 'value4',
  'key5' => 'value5',
);
Run Code Online (Sandbox Code Playgroud)

最快的方法是什么?

Iva*_*uev 16

你需要的array_intersect_key功能:

$result = array_intersect_key($array, array('key2'=>1, 'key4'=>1, 'key5'=>1));
Run Code Online (Sandbox Code Playgroud)

array_flip如果您的键在数组中作为值,也可以提供帮助:

$result = array_intersect_key(
    $array, 
    array_flip(array('key2', 'key4', 'key5'))
);
Run Code Online (Sandbox Code Playgroud)


Gum*_*mbo 5

您可以使用array_intersect_keyarray_fill_keys执行此操作:

$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_fill_keys($keys, null));
Run Code Online (Sandbox Code Playgroud)

array_flip而不是也array_fill_keys将工作:

$keys = array('key2', 'key4', 'key5');
$result = array_intersect_key($array, array_flip($keys));
Run Code Online (Sandbox Code Playgroud)