首页  >  文章  >  后端开发  >  如何在 PHP 中按列值对关联数组行进行分组?

如何在 PHP 中按列值对关联数组行进行分组?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-30 06:16:03499浏览

How to Group Associative Array Rows by Column Value in PHP?

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

在编程中,您可能会遇到需要重新组织存储在关联数组中的数据的情况。一个常见的任务是按特定列值对数组中的行进行分组,同时保留原始的第一级键。

考虑以下称为 $old_arr 的关联数组的关联数组:

[
    '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']
]

目标是创建一个新数组 $arr,其中行根据 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 )
          )
)

要实现此目的,您可以按照以下步骤操作:

  1. 初始化一个空数组 $arr。
  2. 迭代$old_arr 中的每一行。
  3. 使用 id 值作为 $arr 中的键。如果键不存在,则创建一个新数组。
  4. 将当前行赋值给$arr中对应的键。
  5. 对$arr数组按SORT_NUMERIC排序,确保键在$arr中数字顺序。

提供的 PHP 代码遵循此方法来生成所需的结果:

$arr = array();

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

ksort($arr, SORT_NUMERIC);

以上是如何在 PHP 中按列值对关联数组行进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!

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