read ) */ $userRoles = [ 'admin' => ['read', 'write', 'delete'], 'editor' => ['read', 'create', 'update'], 'viewer' => ['read'] ]; $requiredPermissions = ['read', 'write']; // Find roles that have ALL required permissions $matchingRoles = []; foreach ($userRoles as $roleName => $rolePermissions) { // If the intersection of rolePermissions and requiredPermissions is exactly requiredPermissions, // it means the role has all required permissions. if (count(array_intersect($rolePermissions, $requiredPermissions)) === count($requiredPermissions)) { $matchingRoles[] = $roleName; } } echo " Roles having all required permissions ('read', 'write'): "; print_r($matchingRoles); /* Output: Array ( [0] => admin ) */ // Example with associative arrays, comparing both keys and values $item1 = ['id' => 1, 'name' => 'Laptop', 'price' => 1200]; $item2 = ['id' => 1, 'name' => 'Laptop', 'price' => 1200, 'stock' => 50]; // array_intersect_assoc compares both keys and values $commonItemProperties = array_intersect_assoc($item1, $item2); echo " Common properties (keys and values) between item1 and item2: "; print_r($commonItemProperties); /* Output: Array ( [id] => 1 [name] => Laptop [price] => 1200 ) */ ?>