原数组:
$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 '';