有没有办法在单个表达式中从数组中获取子数组,从原始数组中获取特定键?
以示例:
$a = array('a' => 1, 'b' => 2, 'c' = 4, 'd' => 'clorch')
$b = doesthisfunctionexist($a, 'a', 'c')
//$b containing array('a' => 1, 'c' => 4)
我知道我可以编写该功能,但是我在询问是否存在类似的原生函数。
答案 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')));