代码
<?php/*** 根据key 给二维数组分组* @param array $arr 需要分组的数组* @param string $key 分组字段* @return array 分好组的数组*/function arrayGroupBy(array $arr, string $key){$grouped = [];foreach ($arr as $value) {$grouped[$value[$key]][] = $value;}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('arrayGroupBy', $parms);}}return $grouped;}
实例
<?php
$arr = 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',
)
);
$a = arrayGroupBy($arr,'type');
print_r($a);
打印结果为
Array
(
[分组1] => 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
(
[0] => Array
(
[id] => 3
[wo_id] => 31
[evaluate_id] => 4
[type] => 分组2
[ctime] => 2016-12-02 11:40:01
)
[1] => Array
(
[id] => 4
[wo_id] => 2
[evaluate_id] => 5
[type] => 分组2
[ctime] => 2016-12-07 10:21:40
)
[2] => Array
(
[id] => 5
[wo_id] => 2
[evaluate_id] => 3
[type] => 分组2
[ctime] => 2016-12-07 10:21:51
)
)
[分组3] => Array
(
[0] => Array
(
[id] => 6
[wo_id] => 2
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:21:56
)
[1] => Array
(
[id] => 7
[wo_id] => 4
[evaluate_id] => 2
[type] => 分组3
[ctime] => 2016-12-07 10:22:10
)
)
)
