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ó.