首页  >  文章  >  后端开发  >  如何在 PHP 中按特定列值对关联数组行进行分组,同时保留原始的一级键?

如何在 PHP 中按特定列值对关联数组行进行分组,同时保留原始的一级键?

DDD
DDD原创
2024-10-30 14:07:50800浏览

How can I group associative array rows by a specific column value in PHP while preserving the original first-level keys?

按列值对关联数组行进行分组

给定一个由关联数组组成的关联数组,一个常见的任务是按特定列对它们进行分组值,同时保留原始的第一级密钥。考虑以下输入数组:

[
    'a' => ['id' => 20, 'name' => 'chimpanzee'],
    'b' => ['id' => 40, 'name' => 'meeting'],
    'c' => ['id' => 20, 'name' => 'dynasty'],
    'd' => ['id' => 50, 'name' => 'chocolate'],
    'e' => ['id' => 10, 'name' => 'bananas'],
    'f' => ['id' => 50, 'name' => 'fantasy'],
    'g' => ['id' => 50, 'name' => 'football']
]

我们的目标是根据 id 值对这些子数组进行分组:

array
(
    10 => array
        (
            e => array ( id = 10, name = bananas )
        )
    20 => array
        (
            a => array ( id = 20, name = chimpanzee )
            c => array ( id = 20, name = dynasty )
        )
    40 => array
        (
            b => array ( id = 40, name = meeting )
        )
    50 => array
        (
            d => array ( id = 50, name = chocolate )
            f => array ( id = 50, name = fantasy )
            g => array ( id = 50, name = football )
        )
)

要使用 PHP 实现此目的,我们可以使用以下代码:

$arr = array();

foreach ($old_arr as $key => $item) {
   $arr[$item['id']][$key] = $item;
}

ksort($arr, SORT_NUMERIC);

此代码首先迭代原始数组,提取 id 和相应的子数组。然后,它将这个子数组存储在 id 键下的新数组中,并保留原始的一级键。最后,它按 id 对新数组进行数字排序。

以上是如何在 PHP 中按特定列值对关联数组行进行分组,同时保留原始的一级键?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn