Это должно сработать, это не совсем то, что вам нужно, но я не вижу причины, по которой вам нужно индексировать полученный массив численно, а затем по исполнителю.
$source = array(
array('Michael Jackson' => 'Thriller'),
array('Michael Jackson' => 'Rock With You'),
array('Teddy Pendergrass' => 'Love TKO'),
array( 'ACDC' => 'Back in Black')
);
$result = array();
foreach($source as $item) {
$artist = key($item);
$album = current($item);
if(!isset($result[$artist])) {
$result[$artist] = array();
}
$result[$artist][] = $album;
}
И вы можете зациклить массив $result
и построить свой HTML следующим образом:
foreach($result as $artist => $albums) {
echo '<h2>'.$artist.'</h2>';
echo '<ul>';
foreach($albums as $album) {
echo '<li>'.$album.'</li>';
}
echo '</ul>';
}
Что приведет к тому же списку, который вы описали.