我在model层里查询数据库传参到控制层,但是我查到的是整个X轴\Y轴在一个数组里,我现在想把这个数组拆分成四个部分(01-05,06-10,11-16,17-19),并把X 轴 Y轴分别输出
这是我的model层部分代码
$tableName="instruments_tuokong";
//取全部仪器编号
$sqlGetAllCode=sprintf("select distinct code from %s",$tableName);
$codeArr=DB::select($sqlGetAllCode);
$A_data = [];
foreach ($codeArr as $a => $b) { //a是角标 b是对应的code编号
// dump($a);
// dump($b->code);
$sqlGetData = sprintf("select variation from ".$tableName." where code = '".$b->code."' order by create_time desc limit 1");
$codeData = DB::select($sqlGetData);
$A_data[$b->code]= $codeData[0]->variation;
}
这是我的控制器接收部分代码
public function getChartData(string $tableName) {
$modelData = new modelData();
$result1 = $modelData->change($tableName);//1/
$A_data = $result1[0];
}
查询出来的数据
array(19) { ["TK5-01"]=> string(4) "2300" ["TK5-02"]=> string(4) "2000" ["TK5-03"]=> string(4) "5130" ["TK5-04"]=> string(4) "5630" ["TK5-05"]=> string(4) "4700" ["TK5-06"]=> string(4) "1200" ["TK5-07"]=> string(4) "2151" ["TK5-08"]=> string(4) "2600" ["TK5-09"]=> string(4) "2600" ["TK5-10"]=> string(4) "2200" ["TK5-11"]=> string(4) "1200" ["TK5-12"]=> string(4) "1600" ["TK5-13"]=> string(4) "3000" ["TK5-14"]=> string(4) "2600" ["TK5-15"]=> string(4) "2000" ["TK5-16"]=> string(4) "2800" ["TK5-17"]=> string(4) "2460" ["TK5-18"]=> string(4) "2600" ["TK5-19"]=> string(4) "2365" }
您可以使用循环将数据拆分为四个部分,并将X轴和Y轴分别输出。以下是一个可能的实现方法:
public function getChartData(string $tableName) {
$modelData = new modelData();
$result1 = $modelData->change($tableName); // 获取查询结果
$data = $result1[0];
$part1 = []; // 01-05部分数据
$part2 = []; // 06-10部分数据
$part3 = []; // 11-16部分数据
$part4 = []; // 17-19部分数据
foreach ($data as $code => $variation) { // 遍历原始数据
// 解析编号后两位
$number = intval(substr($code, -2));
switch (true) {
case $number >= 1 && $number <= 5: // 01-05部分
$part1[] = [$code, $variation];
break;
case $number >= 6 && $number <= 10: // 06-10部分
$part2[] = [$code, $variation];
break;
case $number >= 11 && $number <= 16: // 11-16部分
$part3[] = [$code, $variation];
break;
case $number >= 17 && $number <= 19: // 17-19部分
$part4[] = [$code, $variation];
break;
}
}
// 输出数据
echo "01-05部分:\n";
foreach ($part1 as $item) {
echo $item[0] . ": " . $item[1] . "\n";
}
echo "06-10部分:\n";
foreach ($part2 as $item) {
echo $item[0] . ": " . $item[1] . "\n";
}
echo "11-16部分:\n";
foreach ($part3 as $item) {
echo $item[0] . ": " . $item[1] . "\n";
}
echo "17-19部分:\n";
foreach ($part4 as $item) {
echo $item[0] . ": " . $item[1] . "\n";
}
}
请注意,上面的输出仅示例,您可以按照自己的需要进行调整。同时,您可能需要根据具体情况更改解析编号的方法和区间划分条件。
这几条数据中,基本都开了方向盘加热,最低档主驾驶座椅加热,最低档吹风(注意,虽然没有开空调加热,但个人感觉温度还是很暖和,据说冬天如果开AC,那能耗就阶跃上升了)。
行驶过程中,长时间堵车时会启用AP,其他时间基本不使用AP。
从上述数据中可以观察到一些现象:
有意思的是发现虽然周一堵车,消耗时间将近2h,但是消耗的电量也是接近平均值的。
周四周五气温回升,行驶效率也有所提升。