我们
经常得到一个二维数组,我们会
发现结果和我们想要的之间有一些偏差。我们可能需要根据二维数组中的字段对数组进行分组。
首先,看看下面的数组,
阵列
(
{ 0 }数组
(
{ 1
{ wo_id } = > 2
{ evaluate_id } = > 1
{
类型} 1组
{ } = > 2016-12-02 11:39:34 CTime
)
{ 1 }数组
(
{ 2
{ wo_id } = > 31
{ evaluate_id } = > 2
{类型} 1组
{ } = > 2016-12-12 11:39:50 CTime
)
{ 2 }数组
(
{ 3
{ wo_id } = > 31
{ evaluate_id } = > 4
{类型} 2组
{ } = > 2016-12-02 11:40:01 CTime
)
{ 3 }数组
(
{ 4
{ wo_id } = > 2
{ evaluate_id } = > 5
{类型} 2组
{ } = > 2016-12-07 10:21:40 CTime
)
{ 4 }数组
(
{ 5
{ wo_id } = > 2
{ evaluate_id } = > 3
{类型} 2组
{ } = > 2016-12-07 10:21:51 CTime
)
{ 5 }数组
(
{ 6
{ wo_id } = > 2
{ evaluate_id } = > 2
{类型} 3组
{ } = > 2016-12-07 10:21:56 CTime
)
{ 6 }数组
(
{ 7
{ wo_id } = > 4
{ evaluate_id } = > 2
{类型} 3组
{ } = > 2016-12-07 10:22:10 CTime
)
)
下面是一个典型的例子。如果我想分开数组中的数据,根据类型(组)分开,如果不分组,循环上可能非常冗余,所以下面有一个分组
函数。
公共静态函数(ARR array_group_by美元,美元关键)
{
$组= };
foreach(ARR美元美元值){
$分组值{ $ };
}
如果提供更多
参数,递归构建嵌套分组
每个分组数组值按下一个
顺序键分组
如果(func_num_args()> 2){
一美元= func_get_args();
foreach(美元美元美元的价值分为关键=){
$ PARMS = array_merge({价值},array_slice($参数,2,func_num_args())));
分组的关键} = { $美元call_user_func_array('array_group_by,$ PARMS);
}
}
返回分组;
}
美元:二维数组arr
$键:需要按键分组
结果是:
阵列
(
数据包{ 2 } =数组
(
{ 0 }数组
(
{ 1
{ wo_id } = > 2
{ evaluate_id } = > 1
{ } = > 2016-12-02 11:39:34 CTime
{类型} 2组
)
{ 1 }数组
(
{ 2
{ wo_id } = > 31
{ evaluate_id } = > 2
{ } = > 2016-12-12 11:39:50 CTime
{类型} 2组
)
{ 2 }数组
(
{ 3
{ wo_id } = > 31
{ evaluate_id } = > 4
{ } = > 2016-12-02 11:40:01 CTime
{类型} 2组
)
)
数据包{ 1 } =数组
(
{ 0 }数组
(
{ 4
{ wo_id } = > 2
{ evaluate_id } = > 5
{ } = > 2016-12-07 10:21:40 CTime
{类型} 1组
)
{ 1 }数组
(
{ 5
{ wo_id } = > 2
{ evaluate_id } = > 3
{ } = > 2016-12-07 10:21:51 CTime
{类型} 1组
)
)
)
以上是Xiaobi
介绍来的你的PHP。根据键,我想帮助你对二维数组进行分组。如果你有任何问题,请给我留言,萧边会及时给您回复。谢谢您
支持网站。