PHP-在单个表达式中获取子数组

PHP-在单个表达式中获取子数组,php,arrays,Php,Arrays,是否有一种方法可以在单个表达式中从数组中获取子数组,并从原始数组中指定特定的键 举例来说: $a = array('a' => 1, 'b' => 2, 'c' = 4, 'd' => 'clorch') $b = doesthisfunctionexist($a, 'a', 'c') //$b containing array('a' => 1, 'c' => 4) 我知道我可以编写该函数,但我想知道是否存在类似的本机函数。我不知道有这样的函数,但您可以执行以下

是否有一种方法可以在单个表达式中从数组中获取子数组,并从原始数组中指定特定的键

举例来说:

$a = array('a' => 1, 'b' => 2, 'c' = 4, 'd' => 'clorch')
$b = doesthisfunctionexist($a, 'a', 'c')
//$b containing array('a' => 1, 'c' => 4)

我知道我可以编写该函数,但我想知道是否存在类似的本机函数。

我不知道有这样的函数,但您可以执行以下操作:

function array_pick($picks, $array)
    {
     $temp = array();
        foreach($array as $key => $value)
        {
            if(in_array($key, $picks))
            {
                $temp[$key] = $value;
            }
        }
     return $temp;
    }
试着这样做:

 $a = array('a' => 1, 'b' => 2, 'c' =>4, 'd' => 'clorch');
    $b = array('b','c');
    $z = array_pick($b,$a);
    var_dump($z);
输出:

array(2) {
  ["b"]=>
  int(2)
  ["c"]=>
  int(4)
}

你是说
array\u key\u exists()
?例如:
true===array\u key\u存在('a',['a'=>1])。但它一次只对一个键有效。数组\u键\u的存在不是我所期望的。从名称可以推断返回值是布尔值。从单据上可以确认。看看第三个表达式中$b包含什么-这就是我要找的。我正在考虑这个替代方案。似乎这是我唯一能想到的使用本机函数的方法(也许用array_fill替换array_flip,但想法是一样的)。
$a = array(
  "a" => 1,
  "b" => 2,
  "c" => 4,
  "d" => "clorch",
);
$b = array_intersect_key($a, array_flip(array('a', 'c')));
$a = array('a' => 1, 'b' => 2, 'c' => 4, 'd' => 'clorch');
$b = array_intersect_key($a, array_flip(array('a', 'c')));