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

时间:2014-04-15 14:58:45

标签: php arrays

有没有办法在单个表达式中从数组中获取子数组,从原始数组中获取特定键?

以示例:

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

我知道我可以编写该功能,但是我在询问是否存在类似的原生函数。

3 个答案:

答案 0 :(得分:6)

$a = array(
  "a" => 1,
  "b" => 2,
  "c" => 4,
  "d" => "clorch",
);
$b = array_intersect_key($a, array_flip(array('a', 'c')));

答案 1 :(得分:1)

我不知道这样的功能但是,您可以执行以下操作:

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

答案 2 :(得分:1)

$a = array('a' => 1, 'b' => 2, 'c' => 4, 'd' => 'clorch');
$b = array_intersect_key($a, array_flip(array('a', 'c')));