第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 ChartJS 和 PHP 中分組數(shù)據(jù)

在 ChartJS 和 PHP 中分組數(shù)據(jù)

PHP
瀟瀟雨雨 2023-04-21 13:29:56
您好有一個數(shù)據(jù)表,我正在嘗試使用 ChartJS 繪制圖表。數(shù)據(jù)數(shù)組如下所示Array(    [0] => Array        (            [Sort] => 2            [Weeks] => 1-2 Weeks            [Severity] => P1            [Count] => 7        )    [1] => Array        (            [Sort] => 2            [Weeks] => 1-2 Weeks            [Severity] => P2            [Count] => 3        )    [2] => Array        (            [Sort] => 2            [Weeks] => 1-2 Weeks            [Severity] => P3            [Count] => 4        )    [3] => Array        (            [Sort] => 2            [Weeks] => 1-2 Weeks            [Severity] => P4            [Count] => 3        )    [4] => Array        (            [Sort] => 3            [Weeks] => 2-3 weeks            [Severity] => P1            [Count] => 1        )    [5] => Array        (            [Sort] => 4            [Weeks] => >4 weeks            [Severity] => No Value            [Count] => 1        )    [6] => Array        (            [Sort] => 4            [Weeks] => >4 weeks            [Severity] => P1            [Count] => 1        )    [7] => Array        (            [Sort] => 4            [Weeks] => >4 weeks            [Severity] => P3            [Count] => 1        )) 我轉換了與 ChartJS 兼容的數(shù)組,如下所示Array(    [labels] => Array        (            [0] => >4 weeks            [1] => 2-3 weeks            [2] => 1-2 Weeks        )    [datasets] => Array        (            [0] => Array                (                    [label] => No Value                    [backgroundColor] => #F00                    [borderColor] => #F00                    [borderWidth] => 1                    [maxBarThickness] => 50                    [data] => Array                        (                            [0] => 1                        )                )但是當數(shù)據(jù)繪制到圖表時,數(shù)據(jù)會被打亂。數(shù)據(jù)是這樣排列的這是真實數(shù)據(jù)以及圖表的外觀
查看完整描述

1 回答

?
犯罪嫌疑人X

TA貢獻2080條經(jīng)驗 獲得超4個贊

您的代碼有幾個問題。


首先,你的數(shù)據(jù)集應該有標簽數(shù)量的數(shù)據(jù),這樣你就不能在不填充的情況下忽略空白的地方。要解決此問題,您需要更改 $parsedAry['datasets'][$i]['data']  =   array();為$parsedAry['datasets'][$i]['data'] = array(0, 0, 0, 0, 0);


這將在您的數(shù)據(jù)集中添加 5 個空位。


其次,您必須為此將數(shù)字放在正確的位置,您必須為最后一個循環(huán)添加一個計數(shù)器以識別正確的位置。


最后你的代碼應該是這樣的。


function chart()

{

    $ar = RNCPHP\AnalyticsReport::fetch('Open tickets Ageing by priority');

    $arr = $ar->run(0, $filters);



    $chartInit = array();

    $chartArr['data'] = array();


    // push the report data into an array

    for ($ii = $arr->count(); $ii--;) {

        $row = $arr->next();


        if ($row['Severity'] == null || $row['Severity'] == "") {

            $row['Severity'] = "No Value";

        }


        $row['Sort'] = $row['Sort'];


        array_push($chartInit, $row);

    }

    echo "<pre>";

    print_r($chartInit);


    array_multisort(array_map(function ($element) {

        return $element['Sort'];

    }, $chartInit), SORT_DESC, $chartInit);



    $chartDataArr = array();

    $sevArr = array();


    foreach ($chartInit as $k => $v) {

        if (!isset($chartDataArr[$v['Weeks']])) {

            $chartDataArr[$v['Weeks']] = array();

        }


        array_push($chartDataArr[$v['Weeks']], $v);


        if (!in_array($v['Severity'], $sevArr)) {

            array_push($sevArr, $v['Severity']);

        }

    }


    $mapLabels = array();


    $parsedAry = array();

    $parsedAry['labels'] = array();

    $parsedAry['datasets'] = array();


    for ($i = 0; $i < count($sevArr); $i++) {

        $parsedAry['datasets'][$i] = array();


        $parsedAry['datasets'][$i]['label'] = $sevArr[$i];

        $parsedAry['datasets'][$i]['backgroundColor'] = $this->getColor($i);

        $parsedAry['datasets'][$i]['borderColor'] = $this->getColor($i);

        $parsedAry['datasets'][$i]['borderWidth'] = 1;

        $parsedAry['datasets'][$i]['maxBarThickness'] = 50;


        $parsedAry['datasets'][$i]['data'] = array(0, 0, 0, 0, 0);

    }


    $labelsNo = 0;

    foreach ($chartDataArr as $k => $v) {

        array_push($parsedAry['labels'], $k);


        foreach ($v as $k1 => $v1) {

            $keySev = "";

            foreach ($parsedAry['datasets'] as $k2 => $v2) {

                if ($v2['label'] == $v1['Severity']) {

                    $keySev = $k2;

                }

            }


            if ($v1['Count'] == null || $v1['Count'] == "") {

                $v1['Count'] = 0;

            }


            $parsedAry['datasets'][$keySev]['data'][$labelsNo] = $v1['Count'];

        }

        $labelsNo++;

    }


    echo "<pre>";

    print_r($parsedAry);

    echo "</pre>";


    $chartArr['data'] = $parsedAry;


    return $chartArr;

}



查看完整回答
反對 回復 2023-04-21
  • 1 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號