当前位置: 首页 > 编程笔记 >

PHP 根据key 给二维数组分组

任长卿
2023-03-14
本文向大家介绍PHP 根据key 给二维数组分组,包括了PHP 根据key 给二维数组分组的使用技巧和注意事项,需要的朋友参考一下

我们经常拿到一个二维数组出来,会发现结果和自己想要的有些偏差,可能需要根据二维数组里的某个字段对数组分组。

先来看以下数组,

Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[type] => 分组1
[ctime] => 2016-12-02 11:39:34
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[type] => 分组1
[ctime] => 2016-12-12 11:39:50
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[type] => 分组2
[ctime] => 2016-12-02 11:40:01
)
[3] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[type] => 分组2
[ctime] => 2016-12-07 10:21:40
)
[4] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[type] => 分组2
[ctime] => 2016-12-07 10:21:51
)
[5] => Array
(
[id] => 6
[wo_id] => 2
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:21:56
)
[6] => Array
(
[id] => 7
[wo_id] => 4
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:22:10
)
)

这里是一个很典型的例子,如果我希望把 数组中的数据 根据 type(分组) 分开处理,如果不分组,可能循环上会非常冗余,所以有了下面的一个分组函数:

  public static function array_group_by($arr, $key)
{
$grouped = [];
foreach ($arr as $value) {
$grouped[$value[$key]][] = $value;
}
// Recursively build a nested grouping if more parameters are supplied
// Each grouped array value is grouped according to the next sequential key
if (func_num_args() > 2) {
$args = func_get_args();
foreach ($grouped as $key => $value) {
$parms = array_merge([$value], array_slice($args, 2, func_num_args()));
$grouped[$key] = call_user_func_array('array_group_by', $parms);
}
}
return $grouped;
}

$arr : 二维数组

$key: 需要分组的key

得到的结果是:

Array
(
[分组2] => Array
(
[0] => Array
(
[id] => 1
[wo_id] => 2
[evaluate_id] => 1
[ctime] => 2016-12-02 11:39:34
[type] => 分组2
)
[1] => Array
(
[id] => 2
[wo_id] => 31
[evaluate_id] => 2
[ctime] => 2016-12-12 11:39:50
[type] => 分组2
)
[2] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[ctime] => 2016-12-02 11:40:01
[type] => 分组2
)
)
[分组1] => Array
(
[0] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[ctime] => 2016-12-07 10:21:40
[type] => 分组1
)
[1] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[ctime] => 2016-12-07 10:21:51
[type] => 分组1
)
)
)

以上所述是小编给大家介绍的PHP 根据key 给二维数组分组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 问题内容: 在Java中,我的数组中有一个数据,如下所示 我想根据第一列对其进行排序,所以我的最终数据可以像这样 第一列是格式为“ yyyy.MM.dd HH:mm”的日期,第二列是字符串。 问题答案: 根据一列 对二维数组进行排序第一列是日期格式为“ yyyy.MM.dd HH:mm”的日期,第二列是字符串。 因为您说的是二维数组,所以我假设“格式日期…”表示字符串。这是用于对String []

  • 问题内容: 我有一个像这样的数组: 我想基于“否”作为主键对数组中的元素进行分组。输出应如下所示: 请注意,作者的值是与主键``否’‘合并的,请问有人可以帮我吗? 我尝试这样做: 问题答案: 您可以使用通用函数: 我添加了一些示例代码进行测试

  • 本文向大家介绍PHP 二维数组和三维数组的过滤,包括了PHP 二维数组和三维数组的过滤的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接给大家贴代码了,具体代码如下所示: 下面一段代码给大家介绍php三维数组变二维数组 关于PHP 二维数组和三维数组的过滤小编就给大家介绍这么多,希望对大家有所帮助!

  • 问题内容: 我正在查询返回字段(message_type和百分比)的表。我使用PHP编码json数据,这是我的方法 输出: 如您所见,json_encode函数正在添加花括号,引号和对象键名称。 我想要的是将json仅解析为二维数组,这是所需的输出: 我也尝试手动对其进行编码,但无法获得所需的结果。 问题答案: PHP 使用一定数量的魔术来确定给定的矢量是编码为JSON对象还是数组,但是简单的规则

  • 本文向大家介绍php实现给二维数组中所有一维数组添加值的方法,包括了php实现给二维数组中所有一维数组添加值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php实现给二维数组中所有一维数组添加值的方法。分享给大家供大家参考,具体如下: 给二维数组中所有的一维数组添加值(索引和关联) 运行结果: 运行结果: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)

  • 本文向大家介绍PHP二维数组去重算法,包括了PHP二维数组去重算法的使用技巧和注意事项,需要的朋友参考一下 需求 现在有下面一组二维数组: 需要将处于第二维键名为name,其值相同的数组的value合并,形成一个新的数组。 比如上面代码中的name为fileds_510的两个二维数组,就应该合并为一个值为足球,棒球的数组。 思路 提到数组,再PHP中我们首先想到了循环,那么这里显然比较适合使用fo