Removing groups with less matching values

I am removing groups with less values compared to other groups that match but with additional values.

<?php $  items = [     15 => [         1 => 11,     ],     16 => [         1 => 11,         3 => 12,     ],     17 => [         1 => 12,         4 => 18,     ],     25 => [         4 => 18,     ], ];  foreach($  items as $  key=>$  values){      // check if there are any others the match     foreach($  items as $  subKey=>$  subValues){          $  match_count = 0;          // loop through other meta values         foreach($  subValues as $  subMetaKey => $  subMetaValue){              // check if meta values match             if(isset($  values[$  subMetaKey]) && $  values[$  subMetaKey] === $  subMetaValue){                 $  match_count++;                 // match             } else {                 // do not match                 continue;             }         }          // if matches equal and the sub array has more values, unset the array         if($  match_count===count($  values) & count($  subValues)>count($  values)){             unset($  items[$  key]);         }      }  }  var_dump($  items); 

Which outputs:

[     16 => [         1 => 11,         3 => 12,     ],     17 => [         1 => 12,         4 => 18,     ], ]; 

Is there a more efficient way to write this with less foreach loops?