PHP根据条件比较关联数组

标签 php mysql arrays laravel

我有以下数组输出

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_kstop_name=Stop_stripbus_direction两者必须相同 stop_name=Stop_kstop_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();

预期结果 当用户在源和目的地之间搜索时间时,应用程序应返回源和目的地之间的所有公交车行程(例如,如果用户选择长时间

如果我谈论数组结果,我需要根据一些条件按总线分组,例如相同的 bus_name 必须同时具有 [stop_name] => Stop_8[stop_name] => Stop_18[trip][bus_direction]两者必须相同 [stop_name] => Stop_8[stop_name] => Stop_18

在这里更新问题

sql 文件链接在这里

https://github.com/codeforfungit/bustiming

最佳答案

试试这个:

$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')
        ->where([['trip','=','bus_direction'],['stops.stop_name','=',$Stop_k]])
        ->orWhere([['trip','=','bus_direction'],['stops.stop_name','=',$Stop_s])
        ->get();

当然它可能会更好,但就目前而言,虽然我没有足够的信息,但它还不错!

关于PHP根据条件比较关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48231623/

相关文章:

php - 无法在弹出模式窗口中显示 sql 结果

Mysql:如何正确生成当前一组数字上不存在的唯一10位随机数

arrays - 在 Perl 中,如何创建和使用散列数组?

mysql - 多个INNER JOIN子查询sql

java - Google-app-engine 数据存储多维数组

java - 您可以使用增强的 for every 循环将元素添加到数组中吗?

php - 如何将条件插入到 SQL SELECT 中?

php - Laravel - 尝试使用 self ref FK 从同一表的行中获取信息

javascript - Jqgrid 子网格在第一次加载时不扩展

mysql - 从 select 语句中的字符串中删除百分比和语法