当前位置:Gxlcms > PHP教程 > 关于一个数组的问题,重新组合

关于一个数组的问题,重新组合

时间:2021-07-01 10:21:17 帮助过:5人阅读

原数组:
$arr=array(    [0] => Array        (            [caseid] => 31            [name] => 张三            [shijian] => Array                (                    [0] => 8:00                    [1] => 18:00                )        )    [1] => Array        (            [caseid] => 32            [name] => 李四            [shijian] => Array                (                    [0] => 8:00                    [1] => 12:00                    [2] => 18:00                )        )    [2] => Array        (            [caseid] => 33            [name] => 王五            [shijian] => Array                (                    [0] => 8:00                    [1] => 12:00                    [2] => 18:00                )        ))


我要将这个数组 重新组合,按照时间组合,组合完毕应该是这样的,搞了好久搞不出来。求助,谢谢
Array(    [0] => Array        (            [time] => 8:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                                                    )					[1] => Array						(							[caseid] => 32							[casename] =>李四													)					[2] => Array						(							[caseid] => 33							[casename] => 王五													)                )        )    [1] => Array        (            [time] => 12:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 32                            [casename] => 李四                         )					[1] => Array                        (                            [caseid] => 33                            [casename] => 王五                         )                )        )    [2] => Array        (            [time] => 18:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                                                    )					[1] => Array						(							[caseid] => 32							[casename] => 李四													)					[2] => Array						(							[caseid] => 33							[casename] => 王五													)                )        ))



回复讨论(解决方案)

$arr = array (  0 =>   array (    'caseid' => '31',    'name' => '张三',    'shijian' =>     array (      0 => '8:00',      1 => '18:00',    ),  ),  1 =>   array (    'caseid' => '32',    'name' => '李四',    'shijian' =>     array (      0 => '8:00',      1 => '12:00',      2 => '18:00',    ),  ),  2 =>   array (    'caseid' => '33',    'name' => '王五',    'shijian' =>     array (      0 => '8:00',      1 => '12:00',      2 => '18:00',    ),  ),);foreach($arr as $item) {  foreach($item['shijian'] as $t) {    if(! isset($res[$t])) $res[$t] = array('time' => $t, 'detail' => array());    $res[$t]['detail'][] = array('caseid' => $item['caseid'], 'casename' => $item['name']);  }}array_multisort(array_map('strtotime', array_keys($res)), $res);print_r(array_values($res));
Array(    [0] => Array        (            [time] => 8:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )        )    [1] => Array        (            [time] => 12:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [1] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )        )    [2] => Array        (            [time] => 18:00            [detail] => Array                (                    [0] => Array                        (                            [caseid] => 31                            [casename] => 张三                        )                    [1] => Array                        (                            [caseid] => 32                            [casename] => 李四                        )                    [2] => Array                        (                            [caseid] => 33                            [casename] => 王五                        )                )        ))

echo '';$arr = array(    array('caseid'=>31, 'name'=>'张三', 'shijian'=> array('8:00','18:00')),    array('caseid'=>32, 'name'=>'李四', 'shijian'=> array('8:00','12:00','18:00')),    array('caseid'=>33, 'name'=>'王五', 'shijian'=> array('8:00','12:00','18:00')));$result = array();foreach($arr as $row){    foreach($row['shijian'] as $shijian){        $detail = array(            'caseid' => $row['caseid'],            'casename' => $row['name']        );        if(!isset($result[$shijian])){            $result[$shijian]['time'] = $shijian;            $result[$shijian]['detail'] = array();        }        array_push($result[$shijian]['detail'], $detail);    }}ksort($result, SORT_NUMERIC);$result = array_values($result);echo '
';print_r($result);echo '
';

人气教程排行