diff --git a/modules/user/user.module b/modules/user/user.module
index 92e0cee34db39c1d6029afa3f203e3b088991fb7..4ee3ae7ae5f5690ad38baa11ffeb7fcddd766fc3 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -1851,11 +1851,7 @@ function user_admin_perm_submit($form_id, $form_values) {
       // Delete, so if we clear every checkbox we reset that role;
       // otherwise permissions are active and denied everywhere.
       db_query('DELETE FROM {permission} WHERE rid = %d', $role->rid);
-      foreach ($form_values[$role->rid] as $key => $value) {
-        if (!$value) {
-          unset($form_values[$role->rid][$key]);
-        }
-      }
+      $form_values[$role->rid] = array_filter($form_values[$role->rid]);
       if (count($form_values[$role->rid])) {
         db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $role->rid, implode(', ', array_keys($form_values[$role->rid])));
       }