如何在 Laravel 中清洗数组时间字段并提取时分秒

发布时间 - 2026-01-30 00:00:00    点击率:

本文介绍如何在 laravel 中将数据库查询返回的时间戳数组(如 "2025-02-21 07:40:16")清洗为纯时间格式(如 "07:40:16"),并通过 eloquent 模型高效处理数据。

在 Laravel 开发中,常需对数据库查询结果进行格式化处理。例如,从 DataFromRasp 表中获取带时间戳的记录后,若仅需展示“时:分:秒”,直接使用原生字符串截取虽可行,但易出错且不具可维护性;更推荐利用 Laravel 内置的 Carbon 实例进行语义化时间处理。

原始代码中使用 pluck('RSSI', 'created_at') 得到键值对数组,但 created_at 作为键时是字符串类型,无法直接调用 ->format() 方法。因此,优化方案是:先获取完整模型集合,再逐项访问 created_at 属性(自动转为 Carbon 实例),最后调用 format('H:i:s') 提取标准 24 小时制时间

以下是重构后的专业写法(含关键修复与最佳实践):

public function singleDev(Device $deviceID)
{
    // 使用 select() 明确字段,避免加载冗余数据
    $records = DataFromRasp::select('RSSI', 'created_at')
        ->where('MAC', 'C4:A5:DF:24:05:7E')
        ->get();

    $time_array = [];
    $rssi_array = [];
    $cnt = 0;

    foreach ($records as $record) {
        // ✅ 安全提取时间部分:Carbon 实例支持链式 format()
        $time_array[] = $record->created_at->format('H:i:s');
        $rssi_array[] = $record->RSSI;

        // ⚠️ 注意:原代码中变量 $value 未定义(应为 $record->RSSI)
        $rssi = $record->RSSI;
        if ($rssi < -60) {
            $cnt++;
            if ($cnt >= 2) {
                // 此处可添加告警、日志或业务逻辑
            }
        }
    }

    // 调试时建议使用 dd() 查看清洗结果
    dd($time_array); // 输出示例:[

'07:40:16', '07:41:22', ...] return view('backend.auth.user.singleDevice', compact('time_array', 'rssi_array')); }

关键改进点说明:

  • 避免 pluck() 导致时间字段丢失 Carbon 对象特性,改用 get() + 显式属性访问;
  • 使用 $record->created_at->format('H:i:s') 确保时区安全(默认遵循 config/app.php 中的 timezone 设置);
  • 修复了原循环中未定义变量 $value 的错误,统一使用 $record->RSSI;
  • 推荐用 $array[] = $item 替代 array_push(),性能更优且更符合 PHP 惯例。

? 进阶提示: 若需批量格式化,还可结合 Laravel 的 map() 方法实现函数式风格:

$time_array = $records->map(fn($r) => $r->created_at->format('H:i:s'))->toArray();
$rssi_array = $records->pluck('RSSI')->toArray();

最终,清洗后的时间数组可直接传递至 Blade 模板,用于图表渲染、表格展示等场景,确保前端显示简洁、准确、国际化友好。


# php  # laravel  # 前端  # app  # mac  # 键值对  # carbon  # Array  # format  # 字符串  # 循环  # 字符串类型  # map  # 对象  # 数据库  # 重构  # 链式  # 数据库查询  # 进阶  # 还可  # 可直接  # 仅需  # 键值  # 需对  # 更符合 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何快速上传建站程序避免常见错误?  iOS正则表达式验证手机号、邮箱、身份证号等  如何快速查询域名建站关键信息?  如何在万网主机上快速搭建网站?  三星、SK海力士获美批准:可向中国出口芯片制造设备  Laravel怎么使用Intervention Image库处理图片上传和缩放  Laravel API资源类怎么用_Laravel API Resource数据转换  做企业网站制作流程,企业网站制作基本流程有哪些?  iOS验证手机号的正则表达式  微信小程序 require机制详解及实例代码  如何快速搭建高效可靠的建站解决方案?  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Laravel如何实现用户密码重置功能?(完整流程代码)  如何快速重置建站主机并恢复默认配置?  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何实现事件和监听器?(Event & Listener实战)  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何用y主机助手快速搭建网站?  高性价比服务器租赁——企业级配置与24小时运维服务  奇安信“盘古石”团队突破 iOS 26.1 提权  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在腾讯云服务器上快速搭建个人网站?  MySQL查询结果复制到新表的方法(更新、插入)  Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  简历在线制作网站免费版,如何创建个人简历?  如何构建满足综合性能需求的优质建站方案?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Python制作简易注册登录系统  在Oracle关闭情况下如何修改spfile的参数  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel如何处理文件下载请求?(Response示例)  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Python文件操作最佳实践_稳定性说明【指导】  如何在景安服务器上快速搭建个人网站?  如何自定义建站之星网站的导航菜单样式?  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何在搬瓦工VPS快速搭建网站?  如何用PHP快速搭建高效网站?分步指南  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  历史网站制作软件,华为如何找回被删除的网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  英语简历制作免费网站推荐,如何将简历翻译成英文?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  网页制作模板网站推荐,网页设计海报之类的素材哪里好?