是否有一个PHP函数,当给定两个数组时,只返回与另一个匹配的索引?

时间:2015-04-30 16:29:26

标签: php arrays

我正在寻找一种更有效的方法来执行以下操作,但优先没有for / while循环。

  $contacts_needed = array('tom','joe');

  $all_contacts = array(
      'tom'  => array('age'=>20, 'sex'=>'m'),
      'jack' => array('age'=>33, 'sex'=>'f'),
      'rob'  => array('age'=>33, 'sex'=>'m'),
      'joe'  => array('age'=>33, 'sex'=>'m'),
      'jill' => array('age'=>20, 'sex'=>'f'),
  );

  $contacts = array();

  foreach ($contacts_needed  as $contacts_name) {
    $contacts[$contacts_name] = in_array($contacts_name,$all_contacts) ? $all_contacts[$contacts_name] : array();
  }

有没有这样做的功能? e.g

  $contacts = array_functionname($contacts_needed, $all_contacts);
   //array_in_array(needles, haystack);

如果没有更有效的方法吗?

2 个答案:

答案 0 :(得分:2)

您可以使用array_intersect_keys()

执行此操作
$contacts

Array ( [tom] => Array ( [age] => 20 [sex] => m ) [joe] => Array ( [age] => 33 [sex] => m ) ) 现在持有

{{1}}

答案 1 :(得分:1)

最简单的解决方案是:

array_intersect_key($arrayToFilter, array_flip($simpleArrayOfKeys))

您可以在PHP网站上看到详细示例:http://php.net/manual/fr/function.array-intersect-key.php#109706