【发布时间】:2018-06-22 05:34:45
【问题描述】:
我有以下数组输出
Array
(
[0] => Array
(
[id] => 1
[bus_id] => 1
[stop_order_id] => 14
[bus_time] => 09:59:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 8
[stop_orders] => 14
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_8
[bus_name] => M.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[1] => Array
(
[id] => 1
[bus_id] => 1
[stop_order_id] => 22
[bus_time] => 10:50:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 18
[stop_orders] => 22
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_18
[bus_name] => M.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[2] => Array
(
[id] => 1
[bus_id] => 1
[stop_order_id] => 22
[bus_time] => 10:55:00
[bus_direction] => 2
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 18
[stop_orders] => 22
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_18
[bus_name] => M.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[3] => Array
(
[id] => 1
[bus_id] => 1
[stop_order_id] => 14
[bus_time] => 11:58:00
[bus_direction] => 2
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 8
[stop_orders] => 14
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_8
[bus_name] => M.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[4] => Array
(
[id] => 2
[bus_id] => 2
[stop_order_id] => 14
[bus_time] => 10:05:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 8
[stop_orders] => 14
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_8
[bus_name] => J.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[5] => Array
(
[id] => 2
[bus_id] => 2
[stop_order_id] => 22
[bus_time] => 10:55:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 18
[stop_orders] => 22
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_18
[bus_name] => J.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[6] => Array
(
[id] => 2
[bus_id] => 2
[stop_order_id] => 22
[bus_time] => 10:58:00
[bus_direction] => 2
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 1
[stop_id] => 18
[stop_orders] => 22
[route_name] => Sydney
[seo_url] => sydney
[stop_name] => stop_18
[bus_name] => J.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[7] => Array
(
[id] => 5
[bus_id] => 5
[stop_order_id] => 27
[bus_time] => 11:07:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 2
[stop_id] => 8
[stop_orders] => 5
[route_name] => Melbone
[seo_url] => Melbone
[stop_name] => stop_8
[bus_name] => R.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
[8] => Array
(
[id] => 5
[bus_id] => 5
[stop_order_id] => 32
[bus_time] => 12:50:00
[bus_direction] => 1
[trip] => 1
[created_at] => -0001-11-30 00:00:00
[updated_at] => -0001-11-30 00:00:00
[route_id] => 2
[stop_id] => 18
[stop_orders] => 10
[route_name] => Melbone
[seo_url] => Melbone
[stop_name] => stop_18
[bus_name] => R.S
[bus_number] =>
[bus_image] =>
[bus_stop_start] =>
[bus_stop_end] =>
)
)
所以在这个数组中我试图根据几个条件对数组进行分组
1) 获取 buses stop_name=Stop_k 和 stop_name=Stop_s 和 trip 和 bus_direction 在 stop_name=Stop_k 和 stop_name=Stop_s 中必须相同
我已经厌倦了制作新数组,但看起来它对我来说变得很复杂
$busGroup=[];
foreach ($response as $key=>$value){
if(!in_array($value->bus_name,$busGroup)){
$busGroup[$value->bus_name][$value->trip][$value->bus_direction][]=$value->toArray();
}
}
谁能帮我让它工作。谢谢。 由于我尝试使用查询获得结果但未能成功。我对此已有一个问题 MYSQL AND query to satisfy on same column
即使我在查询中得到相同的结果,我也可以接受它
更新
我在 laravel 中的查询
$response=BusTimingModel::join('stop_orders','stop_orders.id','=','bus_timings.stop_order_id')
->join('routes','stop_orders.route_id','=','routes.id')
->join('stops','stop_orders.stop_id','=','stops.id')
->join('buses','buses.id','=','bus_timings.bus_id')
->whereIn('stops.stop_name',['stop_8', 'Stop_18'])
->get();
我也尝试过以下查询
$response=BusTimingModel::join('stop_orders','bus_timings.stop_order_id','=','stop_orders.id')
->join('routes','stop_orders.route_id','=','routes.id')
->join('stops','stop_orders.stop_id','=','stops.id')
->join('buses','buses.id','=','bus_timings.bus_id')
->whereIn('stops.stop_name',['stop_8', 'stop_18'])
->havingRaw('bus_timings.bus_time BETWEEN CAST("01:59:00" AS time) AND CAST("12:00:00" AS time)')
->get();
预期结果 当用户在源到目的地之间搜索以及时间时,应用程序应该返回源和目的地之间的所有公共汽车旅行(例如,如果用户选择长时间
如果我谈到数组结果,我需要根据几个条件按总线分组,例如相同的总线名称必须同时具有 [stop_name] => Stop_8 和 [stop_name] => Stop_18 和 [trip] 和 [bus_direction] 必须在 [stop_name] => Stop_8 和[stop_name] => Stop_18
此处更新问题
这里附上sql文件的链接
【问题讨论】:
-
结果从何而来?我猜他们来自 db。
-
@Amin.Ya 你是对的。我会更新我的查询。
-
如果你发布一个预期结果的例子会很好。
-
@Laerte.Ya 我已经更新了我的问题
-
什么是 Stop_k 和 Stop_s。