I am querying all orders from a WordPress database that uses the WooCommerce Bookings plugin. I want to display Upcoming Bookings and there is a potential to have every hour within 2015 to be booked; which means that I might query over 8700 orders. I'm new to PHP and did most of this following code myself. I'm not sure if there is a more efficient way of writing this code. I don't want my code to hinder site performance. Here is the code: <?php function objectToArray($d) { if (is_object($d)) { $d = get_object_vars($d); } if (is_array($d)) { return array_map(__FUNCTION__, $d); } else { return $d; } } $results = $wpdb->get_results("SELECT tzYeb_2_posts.* FROM tzYeb_2_posts INNER JOIN tzYeb_2_term_relationships ON (tzYeb_2_posts.ID = tzYeb_2_term_relationships.object_id) WHERE 1=1 AND ( tzYeb_2_term_relationships.term_taxonomy_id IN (11) ) AND tzYeb_2_posts.post_type = 'shop_order' AND ((tzYeb_2_posts.post_status = 'publish')) GROUP BY tzYeb_2_posts.ID ORDER BY tzYeb_2_posts.post_date DESC"); $time_array = array(); $fname_array = array(); $church_array = array(); $city_array = array(); $state_array = array(); $new_array = array(); foreach( $results as $result ) { $order_items = $wpdb->get_results(" SELECT order_item_id, order_item_name, order_item_type FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = " . $result->ID . " AND order_item_type IN ('line_item') ORDER BY order_item_id "); foreach( $order_items as $order_item ) { $item_meta = $wpdb->get_results(" SELECT * FROM {$wpdb->prefix}woocommerce_order_itemmeta WHERE order_item_id = " . $order_item->order_item_id . " "); $meta_array = objectToArray( $item_meta ); $timestamp = ""; $date = ""; $time = ""; $fname = ""; $church = ""; $city = ""; $state = ""; foreach( $meta_array as $data ) { if( $data['meta_key'] == 'Booking Date' ) $date = $data['meta_value']; if( $data['meta_key'] == 'Booking Time' ) $time = $data['meta_value']; if( $data['meta_key'] == 'First Name - First Name' ) $fname = $data['meta_value']; if( $data['meta_key'] == 'Church Information - Church Name' ) $church = $data['meta_value']; if( $data['meta_key'] == 'Church Information - City' ) $city = $data['meta_value']; if( $data['meta_key'] == 'Church Information - State' ) $state = $data['meta_value']; } $timestamp = strtotime( $time . ' ' . $date ); array_push( $time_array, $timestamp ); array_push( $fname_array, $fname ); array_push( $church_array, $church ); array_push( $city_array, $city ); array_push( $state_array, $state ); } } $arrays = array( $fname_array, $church_array, $city_array, $state_array ); foreach( $time_array as $index => $key ) { $t = array(); foreach( $arrays as $array ) { $t[] = $array[$index]; } $up[$key] = $t; } ksort( $up ); $i = 0; foreach( $up as $tsort => $tval ) { if( $tsort > strtotime('now') ) { ?> <div class="wc-upcoming-booking"> <div class="wc-upcoming-time"> <span class="upcoming-hour"><?php echo date( 'g:i A', $tsort ); ?></span> <span class="upcoming-date"><?php echo date( 'F j', $tsort ); ?></span> </div> <div class="wc-upcoming-details"> <?php if( $tval[0] ) { echo $tval[0]; } ?> <?php if( $tval[1] ) { echo ', ' . $tval[1]; } ?> <?php if( $tval[2] ) { echo ', ' . $tval[2]; } ?> <?php if( $tval[3] ) { echo ', ' . $tval[3]; } ?> </div> </div> <?php $i++; if( $i >= 10 ) break; } } ?> Please advise. Thank you.