php - 将多维数组中的重复数组键分组到子数组中

标签 php arrays multidimensional-array grouping html-lists

我有一个名为 $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/

相关文章:

java - 如何使用用户输入在 Java 中填充二维数组?

php - laravel 中的 mysqli_connect() 错误,次要版本错误

php - 在没有 Windows 打印对话框的情况下使用 php (javascript) 在本地打印页面

c++ - 如何使用 vector 中包含的 double[4][4] 数组?

arrays - 如何在给定整数数组中的 100 万数据的情况下有效搜索 - ruby

php - 如何从此查询创建多维数组

c - 二维指针的作用类似于二维数组

php - PHP中不存在__invoke()方法如何处理?

php - 登录检查页面空白或不重定向

javascript - 在 Javascript 中对数字数组进行排序