首页 > 解决方案 > 检查数组是否在数组中并在 PHP 中匹配

问题描述

我有一个关联数组,想检查一个数组是否在该关联数组中,如果是,我想获取匹配的数组。

我的关联数组看起来像这样:

 $assoc_array = array(
  array(
   'firstname' => 'John',
   'lastname' => 'Doe',
   'age' => 26
  ),
  array(
   'firstname' => 'Sophia',
   'lastname' => 'Smith',
   'age' => 30
  )
 );

然后,如果我想检查这个数组:

 $array = array(
   'firstname' => 'John',
   'lastname' => 'Doe'
 );

它会给我这个结果:

array(
 'firstname' => 'John',
 'lastname' => 'Doe',
 'age' => 26
);

任何帮助将不胜感激。

标签: phparrays

解决方案


如果您循环数组并使用array_intersect,它将返回名字和姓氏。
如果没有匹配,则返回空数组。

这意味着如果匹配项为真,我们可以做一个简单的 if 操作,然后将子数组添加到您的新数组中。

foreach($assoc_array as $sub){
    $match = array_intersect($sub, $array);
    if($match) $new[] = $sub;
}
var_dump($new);

https://3v4l.org/enaXb

或将其浓缩为:

foreach($assoc_array as $sub){
    if(array_intersect($sub, $array)) $new[] = $sub;
}
var_dump($new);

推荐阅读