侯体宗的博客 有一个时间对应温度数组,然后根据自定义时间段获取该时间段平均温度,用laravel优雅的显示出来

石可破,丹可磨
  • 首页
  • laravel8仿版
  • beego仿版
  • go_聊天
  • 人生
  • 技术
  • php
  • 架构
  • 数据库
  • 更多
    • 文件下载
    • 匿名群聊
    • 群聊(进来吹会!)
    • 留言
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册
    • 设置栏目
    • 更多设置
    • 分割线

有一个时间对应温度数组,然后根据自定义时间段获取该时间段平均温度,用laravel优雅的显示出来

Laravel  /  管理员 发布于 2020-11-11 16:25:24   194

需求:

1.每天时间与温度对应的一个有一个数组;(已有)

['2020-11-09 00:00:00' => 0,

'2020-11-09 01:00:00' => 0,

'2020-11-09 02:00:00' => -1,

'2020-11-09 03:00:00' => -1,

'2020-11-09 04:00:00' => -2,

'2020-11-09 05:00:00' => -2,

...]

2.用户自定义的时间段 比如 4点到8点/8点到11点等等;

3.求出每个不同时间段,平均温度值!(注意:优雅);


代码:

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
use Illuminate\Support\Collection;
class TestController extends Controller
{
    public function __invoke(Request $request)
    {
        $dates = [
            ['2020-11-09 04:00:00', '2020-11-09 08:00:00'],
            ['2020-11-09 08:00:00', '2020-11-09 11:00:00'],
            ['2020-11-09 11:00:00', '2020-11-09 15:00:00'],
            ['2020-11-09 15:00:00', '2020-11-09 22:00:00'],
            ['2020-11-09 22:00:00', '2020-11-10 04:00:00'],
            ['2020-11-10 04:00:00', '2020-11-10 08:00:00'],
            ['2020-11-10 08:00:00', '2020-11-12 11:00:00'],
            ['2020-11-10 11:00:00', '2020-11-12 15:00:00'],
        ];
        return Collection::make($dates)->map(function ($val) {
            $avg = $this->getAvgItem($val[0], $val[1])->avg();
            return [
                'start' => $val[0],
                'end' => $val[1],
                'avg' => $avg
            ];
        });
    }
    protected function getAvgItem(string $start, string $end)
    {
        $start_date = Carbon::parse($start);
        $end_date = Carbon::parse($end);
        $data = $this->getTemperature();
        return Collection::make($data)->filter(function ($key, $val) use ($start_date, $end_date) {
            $now_date = Carbon::parse($val);
            return $now_date->gte($start_date) && $now_date->lte($end_date);
        });
    }
    protected function getTemperature()
    {
        return [
            '2020-11-09 00:00:00' => 0,
            '2020-11-09 01:00:00' => 0,
            '2020-11-09 02:00:00' => -1,
            '2020-11-09 03:00:00' => -1,
            '2020-11-09 04:00:00' => -2,
            '2020-11-09 05:00:00' => -2,
            '2020-11-09 06:00:00' => -2,
            '2020-11-09 07:00:00' => -3,
            '2020-11-09 08:00:00' => -3,
            '2020-11-09 09:00:00' => 0,
            '2020-11-09 10:00:00' => 3,
            '2020-11-09 11:00:00' => 6,
            '2020-11-09 12:00:00' => 8,
            '2020-11-09 13:00:00' => 11,
            '2020-11-09 14:00:00' => 13,
            '2020-11-09 15:00:00' => 13,
            '2020-11-09 16:00:00' => 12,
            '2020-11-09 17:00:00' => 12,
            '2020-11-09 18:00:00' => 9,
            '2020-11-09 19:00:00' => 7,
            '2020-11-09 20:00:00' => 6,
            '2020-11-09 21:00:00' => 6,
            '2020-11-09 22:00:00' => 6,
            '2020-11-09 23:00:00' => 4,
            '2020-11-10 00:00:00' => 2,
            '2020-11-10 01:00:00' => 2,
            '2020-11-10 02:00:00' => 1,
            '2020-11-10 03:00:00' => 1,
            '2020-11-10 04:00:00' => 0,
            '2020-11-10 05:00:00' => 0,
            '2020-11-10 06:00:00' => 0,
            '2020-11-10 07:00:00' => 0,
            '2020-11-10 08:00:00' => 0,
            '2020-11-10 09:00:00' => 8,
            '2020-11-10 10:00:00' => 7,
            '2020-11-10 11:00:00' => 10,
            '2020-11-10 12:00:00' => 11,
            '2020-11-10 13:00:00' => 12,
            '2020-11-10 14:00:00' => 13,
            '2020-11-10 15:00:00' => 13,
        ];
    }
}


总结:基于laravel集合极其优雅的显示出来


昵称:

邮箱:

0条评论
最新最热
  • 分类目录
  • 人生 (119)
  • 技术 (46)
  • linux (23)
  • blog从零开始 (9)
  • php (48)
  • 架构 (14)
  • 前端 (22)
  • TP(3/5) (14)
  • 数据库 (29)
  • 微信 (2)
  • Laravel (56)
  • Redis (3)
  • Docker (2)
  • Go (8)
  • 近期文章
  • PHP程序员2021年最新面试题集-持续更新中...(0个评论)
  • PHP数组的底层实现原理浅析(0个评论)
  • php7垃圾回收变量的GC机制详解(0个评论)
  • 在Laravel中进行类型转换详解(0个评论)
  • mysql数据库中事务的四个特征及四种隔离级别的浅析描述(0个评论)
  • Linux awk 命令及统计nginx日志里访问次数最多的前十个IP(0个评论)
  • 论不要在mysql中使用[utf8]编码,如果要用请用[utf8mb4](0个评论)
  • JWT源码实现逻辑详解(0个评论)
  • Laravel内核分析-设计模式之观察者模式(0个评论)
  • Laravel内核分析-设计模式之装饰模式(0个评论)
  • 近期评论
  • 博主 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 @请教  小图标没有出现 重复检查步骤5,进去看看右下角是否开启..
  • 请教 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 你好,我也遇到了安装完右上角没有显示图标,也不能打开相关网页的问题,用的是谷歌浏..
  • Test11 在

    laravel查询构造器中whereNotKey,whereKey,firstWhere用法详解中评论 <script>alert(\test\)</script&g..
  • 博主 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 @西瓜: 每一步都操作完达到效果了吗? 对了是用谷歌浏览器吧..
  • 西瓜 在

    国内用什么翻墙使用谷歌?上外网神器Ghelper插件详解中评论 你好 我安装完右上角没有显示图标,也不能打开相关网页,是怎么回事呢?..
  • 文章归档
  • 2016-10 (34)
  • 2016-11 (21)
  • 2017-06 (5)
  • 2017-07 (11)
  • 2017-08 (6)
  • 2017-09 (7)
  • 2017-10 (11)
  • 2017-11 (4)
  • 2017-12 (3)
  • 2018-01 (9)
  • 2018-02 (2)
  • 2018-03 (2)
  • 2018-04 (1)
  • 2018-05 (3)
  • 2018-06 (1)
  • 2018-10 (1)
  • 2018-11 (1)
  • 2020-03 (5)
  • 2020-04 (85)
  • 2020-05 (42)
  • 2020-06 (35)
  • 2020-07 (22)
  • 2020-08 (11)
  • 2020-09 (14)
  • 2020-10 (7)
  • 2020-11 (8)
  • 2020-12 (6)
  • 2021-01 (6)
  • 2021-02 (6)
  • 2021-03 (2)
Top
  • 友情链接
  • 侯体宗的博客
  • 三防加固笔记本
  • 澜溪博客
  • 心中hope
  • 徒步认知的博客
  • 陈大剩博客
  • 赵波的博客
  • 佘春晓的博客
  • 自动友链系统

Auther ·HouTiZong© 2009-2020 zongscan.com 版权所有ICP证: 粤ICP备20027696号 PHP交流群 也可以扫右边的二维码

侯体宗的博客