WP - 按自定义字段创建嵌套列表

Right now I have a list of authors with their post title next to the name:

ie. 1 - Right now it looks like this (note that B name is listed twice )
A name - title 1
B name - title 1
B name - title 2
C name - title 1

(Code looks like this)

<?php 

$posts = get_posts(array(
   'posts_per_page'  => -1,
   'post_type'       => 'post',
   'order'           => 'ASC',
   'orderby'        => 'author-last',
   'meta_key'        => 'author-last'
));

if( $posts ): ?>

   <ul>

   <?php foreach( $posts as $post ): setup_postdata( $post ) ?>

      <div>
         <?php echo get_post_meta($post->ID, 'author-last', true);?>
         <?php the_title(); ?>
      </div>

   <?php endforeach; ?>

   </ul>

   <?php wp_reset_postdata(); ?>

<?php endif; ?>

ie. 2 - BUT I need this list to display like this ....

A name
  title 1
B name
  title 1
  title 2
C name   title 1

So i generally would like to have a nested list without having the name repeated. So if multiple titles are written by the same author it would list itself like in example 2.

What do I need to change in my code?

Maybe

  <ul>

       <?php  
       foreach( $posts as $post ): setup_postdata( $post ) ?>
          <li> 
          <div>
          <?php
             static $curr_auth_name = '';
             if ($curr_auth_name != get_post_meta($post->ID, 'author-last', true)) {
                 $curr_auth_name = get_post_meta($post->ID, 'author-last', true);
                 echo $curr_auth_name;
             }
             echo the_title(); 
          ?>
          </div>
          </li> 
       <?php endforeach; ?>

  </ul>