我有一个名为 $songs
的多维数组,它输出以下内容:
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
)
)
我想合并具有重复键的数组,所以我可以获得以下内容:
Array
(
[0] => Array
(
[Michael Jackson] => Array
(
[0] => Thriller
[1] => Rock With You
)
)
[1] => Array
(
[Teddy Pendergrass] => Love TKO
)
[2] => Array
(
[ACDC] => Back in Black
)
)
我该怎么做?
给我输出数组的代码的加分点:
<h2>Michael Jackson</h2>
<ul>
<li>Thriller</li>
<li>Rock With You</li>
</ul>
<h2>Teddy Pendergrass</h2>
<ul>
<li>Love TKO</li>
</ul>
<h2>ACDC</h2>
<ul>
<li>Back in Black</li>
</ul>
最佳答案
这应该可以做到,这并不是您想要的,但我看不出为什么您需要先对结果数组进行数字索引,然后再按艺术家进行索引。
$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>';
}
这会产生与您描述的类似的列表。
关于php - 将多维数组中的重复数组键分组到子数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165406/