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

DDD
发布: 2024-10-30 14:07:50
原创
799 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!