diff --git a/includes/bootstrap.inc b/includes/bootstrap.inc
index 2809d10..21cbb7a 100644
--- a/includes/bootstrap.inc
+++ b/includes/bootstrap.inc
@@ -816,7 +816,8 @@ function variable_set($name, $value) {
  * variable names.
  *
  * @param $name
- *   The name of the variable to undefine.
+ *   The name of the variable to undefine (string), or an array of variable
+ *   names desired for deletion.
  *
  * @see variable_get()
  * @see variable_set()
@@ -824,12 +825,17 @@ function variable_set($name, $value) {
 function variable_del($name) {
   global $conf;
 
-  db_delete('variable')
-    ->condition('name', $name)
-    ->execute();
-  cache_clear_all('variables', 'cache_bootstrap');
+  // Single values are switched to arrays to simplify the method.
+  $variables = !is_array($name) ? array($name) : $name;
 
-  unset($conf[$name]);
+  // Remove the variable from both the database and the global configuration.
+  $or = db_or();
+  foreach ($variables as $variable) {
+    $or->condition('name', $variable);
+    unset($conf[$name]);
+  }
+  db_delete('variable')->condition($or)->execute();
+  cache_clear_all('variables', 'cache_bootstrap');
 }
 
 /**
diff --git a/modules/aggregator/aggregator.install b/modules/aggregator/aggregator.install
index eecd14f..45fea28 100644
--- a/modules/aggregator/aggregator.install
+++ b/modules/aggregator/aggregator.install
@@ -9,14 +9,16 @@
  * Implements hook_uninstall().
  */
 function aggregator_uninstall() {
-  variable_del('aggregator_allowed_html_tags');
-  variable_del('aggregator_summary_items');
-  variable_del('aggregator_clear');
-  variable_del('aggregator_category_selector');
-  variable_del('aggregator_fetcher');
-  variable_del('aggregator_parser');
-  variable_del('aggregator_processors');
-  variable_del('aggregator_teaser_length');
+  variable_del(array(
+    'aggregator_allowed_html_tags',
+    'aggregator_summary_items',
+    'aggregator_clear'
+    'aggregator_category_selector'
+    'aggregator_fetcher'
+    'aggregator_parser'
+    'aggregator_processors'
+    'aggregator_teaser_length',
+  ));
 }
 
 /**
diff --git a/modules/comment/comment.install b/modules/comment/comment.install
index 44b323f..3aab365 100644
--- a/modules/comment/comment.install
+++ b/modules/comment/comment.install
@@ -16,15 +16,17 @@ function comment_uninstall() {
   variable_del('comment_block_count');
   $node_types = array_keys(node_type_get_types());
   foreach ($node_types as $node_type) {
-    variable_del('comment_' . $node_type);
-    variable_del('comment_anonymous_' . $node_type);
-    variable_del('comment_controls_' . $node_type);
-    variable_del('comment_default_mode_' . $node_type);
-    variable_del('comment_default_order_' . $node_type);
-    variable_del('comment_default_per_page_' . $node_type);
-    variable_del('comment_form_location_' . $node_type);
-    variable_del('comment_preview_' . $node_type);
-    variable_del('comment_subject_field_' . $node_type);
+    variable_del(array(
+      'comment_' . $node_type,
+      'comment_anonymous_' . $node_type,
+      'comment_controls_' . $node_type,
+      'comment_default_mode_' . $node_type,
+      'comment_default_order_' . $node_type,
+      'comment_default_per_page_' . $node_type,
+      'comment_form_location_' . $node_type,
+      'comment_preview_' . $node_type,
+      'comment_subject_field_' . $node_type,
+    ));
   }
 }
 
diff --git a/modules/contact/contact.install b/modules/contact/contact.install
index 7ddea45..58c3ca2 100644
--- a/modules/contact/contact.install
+++ b/modules/contact/contact.install
@@ -83,7 +83,9 @@ function contact_install() {
  * Implements hook_uninstall().
  */
 function contact_uninstall() {
-  variable_del('contact_default_status');
-  variable_del('contact_threshold_limit');
-  variable_del('contact_threshold_window');
+  variable_del(array(
+    'contact_default_status',
+    'contact_threshold_limit',
+    'contact_threshold_window',
+  ));
 }
diff --git a/modules/forum/forum.install b/modules/forum/forum.install
index 066b476..e36abac 100644
--- a/modules/forum/forum.install
+++ b/modules/forum/forum.install
@@ -108,13 +108,15 @@ function forum_uninstall() {
   // Load the dependent Taxonomy module, in case it has been disabled.
   drupal_load('module', 'taxonomy');
 
-  variable_del('forum_containers');
-  variable_del('forum_hot_topic');
-  variable_del('forum_per_page');
-  variable_del('forum_order');
-  variable_del('forum_block_num_active');
-  variable_del('forum_block_num_new');
-  variable_del('node_options_forum');
+  variable_del(array(
+    'forum_containers',
+    'forum_hot_topic',
+    'forum_per_page',
+    'forum_order',
+    'forum_block_num_active',
+    'forum_block_num_new',
+    'node_options_forum',
+  ));
 }
 
 /**
diff --git a/modules/locale/locale.install b/modules/locale/locale.install
index a144813..42df1fd 100644
--- a/modules/locale/locale.install
+++ b/modules/locale/locale.install
@@ -47,22 +47,26 @@ function locale_uninstall() {
   }
 
   // Clear variables.
-  variable_del('language_default');
-  variable_del('language_count');
-  variable_del('language_types');
-  variable_del('locale_language_negotiation_url_part');
-  variable_del('locale_language_negotiation_session_param');
-  variable_del('language_content_type_default');
-  variable_del('language_content_type_negotiation');
-  variable_del('locale_cache_strings');
-  variable_del('locale_js_directory');
-  variable_del('javascript_parsed');
-  variable_del('locale_field_language_fallback');
-  variable_del('locale_cache_length');
+  variable_del(array(
+    'language_default',
+    'language_count',
+    'language_types',
+    'locale_language_negotiation_url_part',
+    'locale_language_negotiation_session_param',
+    'language_content_type_default',
+    'language_content_type_negotiation',
+    'locale_cache_strings',
+    'locale_js_directory',
+    'javascript_parsed',
+    'locale_field_language_fallback',
+    'locale_cache_length',
+  ));
 
   foreach (language_types() as $type) {
-    variable_del("language_negotiation_$type");
-    variable_del("locale_language_providers_weight_$type");
+    variable_del(array(
+      "language_negotiation_$type",
+      "locale_language_providers_weight_$type",
+    ));
   }
 
   foreach (node_type_get_types() as $type => $content_type) {
diff --git a/modules/search/search.install b/modules/search/search.install
index c450f05..03e4f73 100644
--- a/modules/search/search.install
+++ b/modules/search/search.install
@@ -9,9 +9,11 @@
  * Implements hook_uninstall().
  */
 function search_uninstall() {
-  variable_del('minimum_word_size');
-  variable_del('overlap_cjk');
-  variable_del('search_cron_limit');
+  variable_del(array(
+    'minimum_word_size',
+    'overlap_cjk',
+    'search_cron_limit',
+  ));
 }
 
 /**
diff --git a/modules/simpletest/tests/bootstrap.test b/modules/simpletest/tests/bootstrap.test
index 14c16a9..5e96f1e 100644
--- a/modules/simpletest/tests/bootstrap.test
+++ b/modules/simpletest/tests/bootstrap.test
@@ -257,6 +257,36 @@ class BootstrapVariableTestCase extends DrupalWebTestCase {
   }
 
   /**
+   * Delete multiple variables by passing an array to variable_del().
+   */
+  function testVariableDeleteMultiple() {
+    // Deleting multiple variables.
+    $variables = array(
+      'simpletest_bootstrap_variable_test_1' => $this->randomName(),
+      'simpletest_bootstrap_variable_test_2' => $this->randomName(),
+    );
+
+    // Set the variables to some new random values.
+    variable_set('simpletest_bootstrap_variable_test_1', $this->randomName());
+    variable_set('simpletest_bootstrap_variable_test_2', $this->randomName());
+
+    // Delete the variables so that we should get the original values back.
+    variable_del(array(
+      'simpletest_bootstrap_variable_test_1',
+      'simpletest_bootstrap_variable_test_2',
+    ));
+
+    // Retrieve the values with the originals as the default.
+    $variable_get = array(
+      'simpletest_bootstrap_variable_test_1' => variable_get('simpletest_bootstrap_variable_test_1', $variables['simpletest_bootstrap_variable_test_1']),
+      'simpletest_bootstrap_variable_test_2' => variable_get('simpletest_bootstrap_variable_test_2', $variables['simpletest_bootstrap_variable_test_2']),
+    );
+
+    // The original random values should be returned as the defaults.
+    $this->assertIdentical($variables, $variable_get, t('Deleting multiple variables by passing in an array.'));
+  }
+
+  /**
    * Makes sure that the default variable parameter is passed through okay.
    */
   function testVariableDefaults() {
diff --git a/modules/statistics/statistics.install b/modules/statistics/statistics.install
index a5dc7f8..e10a848 100644
--- a/modules/statistics/statistics.install
+++ b/modules/statistics/statistics.install
@@ -10,13 +10,15 @@
  */
 function statistics_uninstall() {
   // Remove variables.
-  variable_del('statistics_count_content_views');
-  variable_del('statistics_enable_access_log');
-  variable_del('statistics_flush_accesslog_timer');
-  variable_del('statistics_day_timestamp');
-  variable_del('statistics_block_top_day_num');
-  variable_del('statistics_block_top_all_num');
-  variable_del('statistics_block_top_last_num');
+  variable_del(array(
+    'statistics_count_content_views',
+    'statistics_enable_access_log',
+    'statistics_flush_accesslog_timer',
+    'statistics_day_timestamp',
+    'statistics_block_top_day_num',
+    'statistics_block_top_all_num',
+    'statistics_block_top_last_num',
+  ));
 }
 
 /**
diff --git a/modules/syslog/syslog.install b/modules/syslog/syslog.install
index 12ff4fb..ecc94be 100644
--- a/modules/syslog/syslog.install
+++ b/modules/syslog/syslog.install
@@ -9,7 +9,9 @@
  * Implements hook_uninstall().
  */
 function syslog_uninstall() {
-  variable_del('syslog_identity');
-  variable_del('syslog_facility');
-  variable_del('syslog_format');
+  variable_del(array(
+    'syslog_identity',
+    'syslog_facility',
+    'syslog_format',
+  ));
 }
diff --git a/modules/taxonomy/taxonomy.install b/modules/taxonomy/taxonomy.install
index 10009d6..004f056 100644
--- a/modules/taxonomy/taxonomy.install
+++ b/modules/taxonomy/taxonomy.install
@@ -10,8 +10,10 @@
  */
 function taxonomy_uninstall() {
   // Remove variables.
-  variable_del('taxonomy_override_selector');
-  variable_del('taxonomy_terms_per_page_admin');
+  variable_del(array(
+    'taxonomy_override_selector',
+    'taxonomy_terms_per_page_admin',
+  ));
 }
 
 /**
diff --git a/modules/tracker/tracker.install b/modules/tracker/tracker.install
index cfe8dc7..2cee6f0 100644
--- a/modules/tracker/tracker.install
+++ b/modules/tracker/tracker.install
@@ -4,8 +4,10 @@
  * Implements hook_uninstall().
  */
 function tracker_uninstall() {
-  variable_del('tracker_index_nid');
-  variable_del('tracker_batch_size');
+  variable_del(array(
+    'tracker_index_nid',
+    'tracker_batch_size',
+  ));
 }
 
 /**
diff --git a/modules/update/update.install b/modules/update/update.install
index f0d5499..ed4032d 100644
--- a/modules/update/update.install
+++ b/modules/update/update.install
@@ -78,8 +78,8 @@ function update_install() {
  * Implements hook_uninstall().
  */
 function update_uninstall() {
-  // Clear any variables that might be in use
-  $variables = array(
+  // Clear any variables that might be in use.
+  variable_del(array(
     'update_check_frequency',
     'update_fetch_url',
     'update_last_check',
@@ -87,10 +87,7 @@ function update_uninstall() {
     'update_notify_emails',
     'update_max_fetch_attempts',
     'update_max_fetch_time',
-  );
-  foreach ($variables as $variable) {
-    variable_del($variable);
-  }
+  ));
   $queue = DrupalQueue::get('update_fetch_tasks');
   $queue->deleteQueue();
 }
