// 修改变量名 $fields = [ 'start_time' => 1, 'return_time' => 2, ];

// 循环数据 foreach ($data as $d) { foreach ($fields as $field => $type) { if (!empty($d->$field)) { foreach ($d->$field as $time) { $resultData[] = [ 'id' => $d->id, 's_day' => $d->s_day, 'type' => $type, 'time' => $time, 'line' => $d['lines'], 'start_point' => $d['lines']['point'][0]["point"], 'end_point' => $d['lines']['point'][count($d['lines']['point']) - 1]["point"], 'num' => 0, ]; } } } }

// 循环匹配数据和结果进行关联 foreach ($resultData as &$result) { foreach ($subscribeNum as $subscribe) { if ($subscribe->line_id == $result['line']['id'] && $subscribe->line_start_time == $result['time']) { $result['num'] = $subscribe->num; break; } } }

// 根据调用方及条件过滤不符合条件的数据 $line = []; foreach ($resultData as $item) { if ($api) { if ($busSet > $item['num'] && !in_array($item['line']['id'], $line)) { $line[] = $item['line']['id']; $result[$item['line']['id']] = $item; } } else { $result[] = $item; } }

// 查询预约数据 $subscribe = $subscribeService->model ->where([ ['status', '=', config("status.enable")], ['line_id', 'in', $line] ]) ->whereDay('s_day', $param['date']) ->field('line_id,line_start_time,point_id,count(0) as num') ->group('line_id,line_start_time,point_id') ->select() ->toArray();

// 处理结果数据 foreach ($result as &$resultDatum) { $date = strtotime(date('Y-m-d ') . $resultDatum['time'] . ':00'); $pointArray = $resultDatum['line']['point']; foreach ($pointArray as &$point) { $num = 0; $point['num'] = $num; $date = strtotime("+{$point['time']} minute", $date); $point['time'] = date("H:i", $date); foreach ($subscribe as $s) { if ($resultDatum['line']['id'] == $s['line_id'] && $resultDatum['time'] == $s['line_start_time'] && $s['point_id'] == $point['id']) { $point['num'] = $s['num']; break; } } } $resultDatum['line']['point'] = $pointArray;

优化下这段代码 修改变量名 $fields = s_time = 1 return_time = 2 ; 循环数据 foreach $data as $d foreach $fields as

原文地址: https://www.cveoy.top/t/topic/gfuC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录