From aa15b9420a4cb288d2da81ffb9f599432b1ef428 Mon Sep 17 00:00:00 2001 From: Vlad Date: Thu, 13 Apr 2017 09:28:54 -0400 Subject: [PATCH] Replaces redundant search with one-time lookup --- lib/Subscribers/ImportExport/Import/Import.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/Subscribers/ImportExport/Import/Import.php b/lib/Subscribers/ImportExport/Import/Import.php index 8eb983e703..9002d0c983 100644 --- a/lib/Subscribers/ImportExport/Import/Import.php +++ b/lib/Subscribers/ImportExport/Import/Import.php @@ -209,9 +209,9 @@ class Import { $wp_users = array_filter(Helpers::arrayColumn($temp_existing_subscribers, 'wp_user_id')); // create a new two-dimensional associative array with existing subscribers ($existing_subscribers) // and reduce $subscribers_data to only new subscribers by removing existing subscribers - $existing_subscribers = array(); + $subscribers_emails = array_flip($subscribers_data['email']); foreach($temp_existing_subscribers as $temp_existing_subscriber) { - $existing_subscriber_key = array_search($temp_existing_subscriber['email'], $subscribers_data['email']); + $existing_subscriber_key = $subscribers_emails[$temp_existing_subscriber['email']]; foreach($subscribers_data as $field => &$value) { $existing_subscribers[$field][] = $value[$existing_subscriber_key]; unset($value[$existing_subscriber_key]); @@ -393,14 +393,15 @@ class Import { if(!$subscribers_custom_fields_ids) return; // assemble a two-dimensional array: [[custom_field_id, subscriber_id, value], [custom_field_id, subscriber_id, value], ...] $subscribers_custom_fields_data = array(); - foreach($created_or_updated_subscribers as $subscriber) { - $subscriber_index = array_search($subscriber['email'], $subscribers_data['data']['email']); + $subscribers_emails = array_flip($subscribers_data['data']['email']); + foreach($created_or_updated_subscribers as $created_or_updated_subscriber) { + $subscriber_index = $subscribers_emails[$created_or_updated_subscriber['email']]; foreach($subscribers_data['data'] as $field => $values) { // exclude non-custom fields if(!is_int($field)) continue; $subscribers_custom_fields_data[] = array( (int)$field, - $subscriber['id'], + $created_or_updated_subscriber['id'], $values[$subscriber_index], ); }