特定关键帧的数组切片


Array slice for specific keys

是否有内置函数,或者如这里所述的将元素提取到新数组中的更短方法?

<?php
function arr_slice ($arr, $keys) {
  $ret = array();
  foreach ($keys as $k) { $ret[$k] = $arr[$k]; }
  return $ret;
}
$array = array(
  "a" => 1,
  "b" => 2,
  "c" => 3,
  "d" => 4,
);
print_r(
  arr_slice($array, array("b", "d"))
);

输出

Array
(
    [b] => 2
    [d] => 4
)

是的,可以使用array_intersect_key,但需要一个哈希表作为第二个参数。

print_r(array_intersect_key($array, array("b"=>"", "d"=>"")));
Array
(
    [b] => 2
    [d] => 4
)

您可以编写自己的函数,接受一个键数组作为参数,然后将其作为哈希表,以便使用array_intersect_key

function getByKeys($array, $keys)
{
    return array_intersect_key($array, array_flip($keys));
}