verificar valores repetidos multidimensional eliminar elementos duplicados array_unique array php arrays multidimensional-array

valores - php eliminar elementos duplicados array



PHP-Fusionar claves de arreglos duplicados en una matriz multidimensional (1)

Tengo una matriz multidimensional llamada $ songs, que da como resultado lo siguiente:

Array ( [0] => Array ( [Michael Jackson] => Thriller ) [1] => Array ( [Michael Jackson] => Rock With You ) [2] => Array ( [Teddy Pendergrass] => Love TKO ) [3] => Array ( [ACDC] => Back in Black ) )

Me gustaría fusionar las matrices que tienen claves duplicadas, para que pueda obtener lo siguiente:

Array ( [0] => Array ( [Michael Jackson] => Array ( [0] => Thriller [1] => Rock With You ) ) [1] => Array ( [Teddy Pendergrass] => Love TKO ) [2] => Array ( [ACDC] => Back in Black ) )

¿Cómo hago esto?

Puntos de bonificación por darme el código para generar la matriz como:

<h2>Michael Jackson</h2> <ul> <li>Thriller</li> <li>Thriller</li> </ul> <h2>Teddy Pendergrass</h2> <ul> <li>Love TKO</li> </ul> <h2>ACDC</h2> <ul> <li>Back in Black</li> </ul>


Esto debería hacerlo, no es exactamente lo que quieres, pero no veo una razón por la que necesites indexar la matriz resultante numéricamente, y luego por artista.

$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; }

Y puede hacer un bucle en la matriz $result y construir su HTML de esta manera:

foreach($result as $artist => $albums) { echo ''<h2>''.$artist.''</h2>''; echo ''<ul>''; foreach($albums as $album) { echo ''<li>''.$album.''</li>''; } echo ''</ul>''; }

Lo que daría como resultado una lista similar que usted describió.