排序数组和比较数组值php

大家好,我正在使用 ChartJs 和 Laravel 在图表上绘制数据,我需要根据月份绘制数据,我希望即使没有数据也能在图表上显示整个 12 个月,


我有几个月的数组 ['January', 'February'....


然后我在这里有我的数据:


     $stats = DB::table('wallet_payouts')

        ->groupBy('date')

        ->orderBy('date', 'ASC')

        ->get([

            DB::raw('DATE_FORMAT(created_at, "%M") as date'),

            DB::raw('COUNT(*) as value')

        ]);


    $labels = [];

    $data = [];

    foreach ($months as $month){

        foreach ($stats as $stat){

            if ($month == $stat->date){

                array_push($labels, $stat->date);

                array_push($data, $stat->value);

            }else{

                array_push($labels, $month);

                array_push($data, 0);

            }

        }

    }

但问题不是循环后 12 个月,我得到 24...重复,数据也在 24...我希望月份与没有重复的数据匹配


幕布斯6054654
浏览 69回答 1
1回答

慕妹3146593

试试下面的代码:$stats = DB::table('wallet_payouts')        ->groupBy('date')        ->orderBy('date', 'ASC')        ->get([            DB::raw('DATE_FORMAT(created_at, "%M") as date'),            DB::raw('COUNT(*) as value')        ]);$labels = $months;$data = [];$temp = [];foreach ($stats as $stat){    $temp[$stat->date] = $stat->value;}foreach($months as $month){    if(array_key_exists($month,$temp)){        array_push($data, $temp[$month]);    } else {        array_push($data, 0);    }}
打开App,查看更多内容
随时随地看视频慕课网APP