Php 按键数组筛选数组

Php 按键数组筛选数组,php,arrays,filtering,Php,Arrays,Filtering,可能重复: PHP是否有用于此用途的内置函数 我有两个数组,第一个与一些数据关联。例如: $data = array( 'name' => 'John', 'last_name' => 'Smith', 'address' => 'NY, ...', 'phone' => '1234567' ); 和另一个带有键的数组: $keys = array( 'name', 'last_name' );

可能重复:

PHP是否有用于此用途的内置函数

我有两个数组,第一个与一些数据关联。例如:

$data = array(
    'name'      => 'John',
    'last_name' => 'Smith',
    'address'   => 'NY, ...',
    'phone'     => '1234567'
);
和另一个带有键的数组:

$keys = array(
    'name', 
    'last_name'
);
应用此函数后,我只从第一个数组中获取值,其中包含来自第二个数组的键

$result = function($data, $keys);
print_r($result);

// array(
//    'name'      => 'Jonh',
//    'last_name' => 'Smith'
// )
请尝试以下方法:

$result = array_intersect_key($data, array_fill_keys($keys, null));

更多副本请在提问之前使用搜索功能,就像您在中被要求做的那样。谢谢你评论你的代码,解释你为什么提出这个建议snippet@Yaroslav我提出这个片段是因为它打印出所需的数组,从而解决了这个问题。这不是StackOverflow吗?为什么投反对票?我错过了什么吗?Steffen,是的,编码也是如此,有些代码总比什么都没有好。但是如果你评论你的代码,它将对OP或任何其他未来的访问者更加有用,他们将对它有更好的理解。检查此项以及如何给出正确答案。至于否决票,它是匿名的,所以我不能告诉你谁否决了,但肯定不是我的@雅罗斯拉夫:是的,为了让我的评论像被接受和投票的答案一样完整,我应该添加一个“尝试下面的代码”来确保,读者知道这不是“不要尝试下面的内容”或者忽略这篇文章,里面没有答案。你提到的那篇文章说代码是王道——但是,确保它是编译的,没有解释的代码很少有用。我的是可运行的。由于OP只要求提供一个具体功能的名称,我实际上认为这里的评论可以忽略不计。不同的意见。我觉得很悲哀,当正确的答案不被尊重而被贬低的时候。我不能尝试代码,我不是一个php开发人员,所以我不能向上投票反对你已经有的向下投票,因为我不知道你的代码是否编译。如果你有一些评论,例如,我可以更好地理解你在做什么,以及你是如何做的,然后我可以想好,我不能尝试代码,但推理是正确的,让我投票吧。最后但并非最不重要。是的,接受的答案只有一个尝试下面。那么你就不发表评论了?就因为别人不评论?
 $data = array(
      'name'      => 'John',
      'last_name' => 'Smith',
      'address'   => 'NY, ...',
      'phone'     => '1234567'
  );

  $keys = array('name', 'last_name');

 print_r(array_intersect_key($data, array_flip($keys)));