As per the docs: https://developer.wordpress.org/reference/functions/get_terms/ the way to get terms has changed in WP 4.5. It’s always good to keep the new way of dev.
Thats said, this code seems to work on my side:
$taxonomy = 'city';
$args = array(
'taxonomy' => $taxonomy,
'orderby' => 'count',
'order' => 'DESC',
);
$taxonomy_terms = get_terms( $args );
if ( $taxonomy_terms ) {
foreach ( $taxonomy_terms as $taxonomy_term ) {
$args = array(
'post_type' => 'location',
'posts_per_page' => - 1,
'hide_empty' => false,
'tax_query' => array(
'relation' => 'AND',
'taxonomy' => $taxonomy,
'terms' => $taxonomy_term->slug,
'field' => 'slug',
),
);
I usually use https://generatewp.com/wp_query/ to generate my queries.