特定键的数组切片

时间:2015-02-25 08:22:30

标签: php

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

<?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
)

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

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

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